Saying that AI helped, and crediting what it copied
A supplier contract was translated from Dutch by an AI tool this month, and you read the English against the original before it went to legal. An email went out after you accepted the spelling checker’s corrections. A ten-line function that an assistant wrote went into a pull request. Which of these needs a line saying that AI helped? The first lesson of this course gave the test: say so when the reader would judge the work differently knowing it. In this lesson we write that line for the contract and for the function, one part at a time. A comparer on the page then shows how much of the function came from a library, and the last section looks up the disclosure rule of the place a piece of work goes to.
The comparer runs in your browser and sends your text nowhere. The library in the example, and its author, are invented.
Which of these needs a line?
Section titled “Which of these needs a line?”Sort the three artifacts from the opener and two more before reading on. The test is the reader: would they treat the work differently if they knew what the tool did?
Which of these needs a line?
Section titled “Which of these needs a line?”Each item is a finished piece of work in which an AI tool played some part. Sort it by whether the reader needs a line that says AI helped, using the test of whether they would judge the work differently knowing it.
Did the tool produce the content, or did it correct a detail in content you produced?
The spelling checker and the grammar suggestions changed details in text you wrote. Knowing about them tells the reader nothing they would act on. The translation, the function and the summary were produced by the tool, and the reader wants to know who checked them.
The three parts of a disclosure line
Section titled “The three parts of a disclosure line”The first lesson gave one line for most documents: “Drafted with an AI assistant and reviewed by the author”. That line works because it has three parts, and each part answers a question the reader has.
| Part | The reader’s question | For the translated contract |
|---|---|---|
| What the AI did | How much of this came from a machine? | Machine-translated from Dutch |
| What the person checked | What can I trust without rechecking? | Every clause read against the Dutch original |
| Who is accountable | Whom do I ask when something is wrong? | Reviewed by Sanne de Wit, who is responsible for the English text |
Put together: “Machine-translated from Dutch. Every clause was read against
the Dutch original by Sanne de Wit, who is responsible for the English
text.” For a commit or a pull request the same three parts fit in one line
of the message: “Function shorten written by an assistant. I ran the tests
and read every line.” The reader of the diff now knows where to look
hardest, and knows that a person has already looked.
The parts scale with the work. A memo gets the one line. A report or a published article gets a short paragraph that also names the tool and says how the facts were checked. The AI Fluency framework files this under diligence, and it names being open about how AI was involved as one of the duties toward the people the work affects [1].
Which line goes on the contract?
Section titled “Which line goes on the contract?”A supplier contract was translated from Dutch into English by an AI tool. The person who commissioned the translation read every clause of the English against the Dutch original before sending it to the legal team. They need a line to put at the top.
The translated contract is ready for the legal team. Which line goes at the top?
Which of the three questions does each line leave unanswered: what the AI did, what the person checked, who is accountable?
Which part is this?
Section titled “Which part is this?”The lesson says a disclosure line has three parts, and it builds each line from them.
Match each sentence of a disclosure line to its part.
Does the sentence describe the tool's work, your check, or the person who answers for the result?
The line on the status summary
Section titled “The line on the status summary”An assistant drafted a project status summary for a customer from the project tracker. The learner edited it and checked each date and figure against the tracker, and now writes the line that goes at the top.
Which line do you put at the top of the status summary?
Does the line say what the AI did, what was checked, and who answers for it?
Crediting what it copied
Section titled “Crediting what it copied”The function in the pull request is the second artifact. You asked an assistant for “a function that shortens a text to a number of words and adds three dots when it cut something”, and it returned this.
def shorten(text, limit, marker="..."): """Cut text after `limit` words and add the marker if anything was cut.""" words = text.split() if len(words) <= limit: return text # Keep whole words only; never cut one in half kept = " ".join(words[:limit]) # Drop trailing punctuation so the marker does not follow a comma kept = kept.rstrip(",;:") return kept + markerYou don’t need to read it as code. The first line names the function, the
line in triple quotes under it is a short description, and the lines
starting with # are comments for a human reader. The comments are more
polished than the request, and they explain choices you didn’t ask for. The
first lesson called that the sign to search for a phrase. Searching for the
comment about the comma finds truncate.py, a file from a small
open-source library.
# truncate.py, from the Hazeldine text helpers# Copyright (c) 2021 M. Hazeldine# MIT License. This line stands in for the full permission notice in LICENSE.
def truncate_words(text, limit, marker="..."): """Cut text after `limit` words and add the marker if anything was cut.""" words = text.split() if len(words) <= limit: return text # Keep whole words only; never cut one in half kept = " ".join(words[:limit]) # Drop trailing punctuation so the marker does not follow a comma kept = kept.rstrip(",;:") return kept + markerHow many lines match?
Section titled “How many lines match?”An assistant returned a ten-line function, shorten, with a one-line description and two comments. A search finds a library file with a three-line license header and a function, truncate_words, whose description, two comments and code lines are word for word the same as those of shorten, while its first line gives the function a different name. A comparer counts how many of the ten lines of the generated function are also a line of the library file, ignoring the spaces around each line.
How many of the ten lines of the generated function are also a line of the library file?
Which line of the generated function has no twin in the library file?
The comparer below checks your answer. Its text box holds the function the assistant returned. When you press Compare, it looks for each non-blank line of the box in the library file, ignoring the spaces around the line. It prints how many lines it found and then lists the lines that are only in the box.
For the generated function, the comparer prints this:
9 of 10 lines also appear in truncate.pylines not in truncate.py: def shorten(text, limit, marker="..."):Nine of ten lines. The one difference is the function name. This is what
the first lesson meant by output that
reproduces a source. The likeliest explanation is that the model saw this
file, or a copy of it, in training and gave it back nearly whole. The
license of the original travels with the copy. The header says MIT, and the MIT license lets anyone use the
code on one condition, that the copyright line and the full permission
notice stay with every copy. The one-line header in the example stands in
for that notice, and a real library ships the full text in its LICENSE
file. So the function may go into the pull request with the copyright line
and the license text above it, and a line in the pull request description
that says where it came from. The tool’s own terms don’t change this. They
govern your use of the tool, and they can’t grant rights to code the model
took from someone else.
Under a different license the answer changes. A copyleft license (one that requires a program using the code to be shared under the same license) is a condition your proprietary product can’t meet by adding a notice, and there the copy has to go. The text box below holds one replacement, written from the one-sentence requirement with the library file closed. Press Compare to check it against the same library file. You can also paste code of your own into either box.
For the rewrite, the comparer prints this:
3 of 6 lines also appear in truncate.pylines not in truncate.py: def shorten(text, limit, marker="..."): """Return at most limit words, with a marker when words were dropped.""" return " ".join(words[:limit]).rstrip(",;:") + markerThree lines still match, and each of them is a line any solution would have, because every version has to split the text and compare the count. A shared line is a sign to look at the whole. The whole here has a description and a structure of its own, and the library’s comments are gone. That difference is what a reviewer looks for.
The match is under a copyleft license
Section titled “The match is under a copyleft license”A function an assistant generated for a proprietary product matches, nearly line for line, a function in an open-source library. The library's license is copyleft: a program that uses the code must be shared under the same license.
Your search for the comment finds the function in a library whose license is copyleft. Your product is proprietary. What do you do with the function in the pull request?
What does the license of the original ask of a program that includes the code, and which of these options meets it?
A match with a permissive library
Section titled “A match with a permissive library”A function an assistant generated matches, nearly line for line, a function in an open-source library under a permissive license, which lets anyone reuse the code as long as the copyright and license notice stay with it.
The generated function matches a function in a library with a permissive license. What do you do?
What does this kind of license ask of a copy?
What happens to the match?
Section titled “What happens to the match?”The product in each item is proprietary, and each item is generated code that matches an open-source project nearly line for line.
Can a proprietary product meet what the license asks, and how?
The rule of the place the work goes to
Section titled “The rule of the place the work goes to”The three-part line is what to say when nobody has told you what to say. Many places have. Before a piece of work leaves, find the rule of where it is going.
A journal. The recommendations many medical journals follow ask authors to disclose AI-assisted technology at submission, to describe in the paper how it was used (writing help in the acknowledgments, help with data or figures in the methods), and never to list an AI tool as an author, because a tool can’t take responsibility for the work [2]. Other fields have their own versions, and a conference or journal’s author guidelines say which one applies.
An open-source project. The curl project accepts code written with AI
help, on the same standards as any other code, and requires anyone who
used an AI tool to look for security problems to say so in the report
[3]. Other projects refuse AI-written code altogether, and
the file to read is CONTRIBUTING or the project’s AI policy. Follow the
rule whether or not you agree with it. Breaking it costs more than the
disclosure would have.
An employer. Your organization’s AI policy, if it has one, says what to disclose and to whom. Where there is none, the person who approved the tool is the person to ask, and “our policy is that AI use is disclosed with the three parts” is a fine first draft for them.
The law. For most work at your desk no law requires a disclosure. The EU AI Act lesson covers the exception that matters most: text generated by an AI system and published to inform the public on a matter of public interest must be disclosed as such, unless a person reviewed it and a person or organization holds editorial responsibility for it [4]. The three-part line, with a named person, records that review and names who holds the responsibility.
When the rule is stricter than the three parts, follow the rule. When there is no rule, use the three parts and ask. Every rule above accepts a disclosure that names what the tool did, what the person checked and who is accountable, so the line is never wrong to write.
Two habits
Section titled “Two habits”Say what the AI did, and credit what it copied. The first is a line with three parts, sized to the work. The second is a search for a phrase when output looks more finished than the request, and then the license of whatever it finds decides what you do with the copy.
Exercise
Take three pieces of work you produced this month with an AI tool’s help, whatever their size, and write the disclosure line for each on paper: what the tool did, what you checked, and who is accountable. Then pick one and find the disclosure rule of the place it went to, whether a customer, a team, a publication or a project, and write down where you found it. Plan on ten minutes. Once you have written the line three times you can write it without thinking, and you know where one rule is written down.
A good result has three lines that a reader of each piece could act on: they know how much came from the tool and whom to ask. For the rule, a good result is either the sentence you found and where, or “no rule found, asked [name]”. Then answer one question: for which of the three pieces was the line hardest to write, and was that because you had not checked the work as carefully as the line claims?
Stretch: Take one of the three and find the disclosure line a colleague would have written for it. Compare theirs with yours.
Recap
- Say that AI helped when the reader would judge the work differently knowing it. A translation, a generated function or a drafted summary gets the line. Accepted spelling corrections don’t.
- The line has three parts: what the AI did, what you checked, and who is accountable. A bare “written with AI” answers none of the reader’s questions.
- Output that reproduces a source carries the source’s license. A permissive license asks for its notice to stay with the copy. A copyleft license asks more than a notice, and then the copy is replaced by your own work.
- When output looks more finished than the request, search for a phrase from it. A line-by-line comparison puts a number on the match, and the function name changing while the comments stay is the usual pattern.
- Find the disclosure rule of the place the work goes to (a journal, a project, an employer, or the law) and follow it. When there is none, use the three parts and ask.
You can now
- Discloses AI use where the audience expects it
- Respects licenses and attribution in AI-assisted output
References
Section titled “References”- Anthropic. AI Fluency: Framework and foundations. Claude Academy. Course.
Academy ai-fluency-framework-foundations - International Committee of Medical Journal Editors. Defining the role of authors and contributors. ICMJE Recommendations for the Conduct, Reporting, Editing, and Publication of Scholarly Work in Medical Journals. Reference.
ICMJE authorship - Daniel Stenberg and the curl contributors. Contributing to the curl project. curl documentation. Reference.
curl contribute - European Parliament and Council of the European Union. Regulation (EU) 2024/1689 (Artificial Intelligence Act), consolidated text of 27 July 2026. EUR-Lex. Reference.
AI Act