Skip to content

Add AI Contribution Policy for OpenSSF Technical Initiatives - #605

Open
justaugustus wants to merge 19 commits into
ossf:mainfrom
justaugustus:ai-policy
Open

Add AI Contribution Policy for OpenSSF Technical Initiatives#605
justaugustus wants to merge 19 commits into
ossf:mainfrom
justaugustus:ai-policy

Conversation

@justaugustus

@justaugustus justaugustus commented Apr 28, 2026

Copy link
Copy Markdown
Member

Summary

  • Introduces a comprehensive AI contribution policy for all OpenSSF Technical Initiatives, covering AI-assisted and AI-autonomous contributions, disclosure expectations, maintainer review practices, and repository-level agent configuration
  • Establishes a permissive-by-default stance with clear accountability: five guiding principles, contributor responsibility framework (adapted from ASF guidance), and default prohibition on fully autonomous AI contributions
  • Adds an OpenSSF-specific Security Considerations section addressing AI-generated code risks, with references to the BEST WG and AI/ML Security WG
  • Provides governance mechanisms: TI-level exceptions via the TAC Decision Process, AGENTS.md adoption guidance, and annual review cadence with trigger-based interim reviews

Decision Type

Major — Cross-foundation policy change per the TAC Decision Process

  • 15 business day review period
  • 7 TAC approvers required

Key References

Review Suggestions

  • TAC members review for completeness and alignment with OpenSSF governance
  • AI/ML Security WG and BEST WG leads review for consistency with their published guidance
  • Verify all external links resolve correctly
  • Present at TAC meeting for discussion before vote closes

Co-Authored-By: Claude noreply@anthropic.com

@justaugustus justaugustus left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SecurityCRob — as promised, here's a starting point for the OpenSSF AI policy.

Tagging in the leads of relevant areas for review:

cc: @ossf/tac

@lehors

lehors commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

It would make sense to reference the Linux Foundation's Generative AI Policy:
https://www.linuxfoundation.org/legal/generative-ai

Even though I think its rule #2 represents a real challenge with many of the existing tools available today:

If any pre-existing copyrighted materials (including pre-existing open source code) authored or owned by third parties are included in the AI tool’s output, prior to contributing such output to the project, the Contributor should confirm that they have have permission from the third party owners–such as the form of an open source license or public domain declaration that complies with the project’s licensing policies–to use and modify such pre-existing materials and contribute them to the project. Additionally, the contributor should provide notice and attribution of such third party rights, along with information about the applicable license terms, with their contribution.

@TracyRagan

Copy link
Copy Markdown

This is a thoughtful and timely policy direction, and establishing a consistent foundation-wide stance on AI-assisted contributions makes sense given how quickly agent-supported development is evolving.

And as I mentioned on our call, there are a few practical concerns from the perspective of smaller or resource-constrained Technical Initiatives. The default prohibition on fully autonomous AI contributions may create friction for projects already relying on automation (e.g., dependency update bots or remediation workflows), especially as the boundary between “automation” and “autonomy” is still evolving. Clarifying that distinction would help maintainers apply the policy consistently.

Disclosure expectations and additional review considerations may also introduce extra overhead for already bandwidth-limited maintainer teams. Similarly, guidance around adopting AGENTS.md is forward-looking, but the ecosystem around it is still emerging and may be difficult for some projects to operationalize immediately.

It may help to position this policy clearly as guardrails with flexibility at the TI level, and to ensure the TAC exception pathway is lightweight enough to support legitimate security automation use cases as agent-driven workflows mature.

justaugustus and others added 8 commits April 28, 2026 16:54
Introduce a comprehensive policy governing how AI development tools
are used in contributions to OpenSSF Technical Initiatives. The policy
establishes a permissive-by-default stance with clear accountability:

- Five guiding principles: transparency, responsibility, understanding,
  respect for maintainer time, and authentic engagement
- Disclosure requirements for AI-assisted contributions in PRs
- Commit trailer conventions (Generated-by and Co-authored-by) described
  neutrally, with individual TIs free to choose
- Contributor responsibility framework adapted from ASF guidance
- Default prohibition on AI-autonomous contributions (no human in the
  loop), with exceptions for existing bots and TI-defined workflows
- Maintainer review checklist and authority to close low-quality
  AI-generated submissions
- AGENTS.md adoption guidance aligned with the AAIF specification
- Security considerations section addressing AI-generated code risks,
  with references to the BEST WG and AI/ML Security WG
- TI-level exception framework via TAC governance process
- Annual review cadence with trigger-based interim reviews

References: Kubernetes contributor guide, ASF Generative Tooling
Guidance, RedMonk 2026 AI policy landscape analysis, Scientific Python
community guidelines, AGENTS.md specification, and OpenSSF BEST WG
Security-Focused Guide for AI Code Assistant Instructions.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Stephen Augustus <foo@auggie.dev>
…tability gaps

The current rule requires disclosure for any AI use at any point, with
no minimum threshold. This treats AI tool choice as a reviewer-facing
signal, but tool choice is heterogeneous and does not change what
reviewers are evaluating. Under a strict read it also forces disclosure
for comprehension, translation, and grammar polish, which the policy's
own Recommendations section already lists as reasonable uses.

Reframe the disclosure section so AI tool use is treated as part of a
contributor's workflow (comparable to editor, linter, or language
server choice) and not disclosed by default. The contributor remains
fully responsible under the existing Contributor Responsibility
section, with DCO as the formal accountability attestation.

Require disclosure only in the two cases where the standard
accountability assumption breaks down:

  1. AI-autonomous contributions (already defined in the policy).
  2. AI-produced content the contributor has not meaningfully
     reviewed and cannot fully explain.

Update the Rationale to carry the shift, replace the PR template
tool-use declaration with a review attestation, and detach the
"transform or adapt existing code" guidance from "the AI disclosure"
so it stands on its own as a source-attribution concern.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
The current Requirements list bans AI-generated commit messages outright
while permitting AI-drafted-then-human-reviewed output everywhere else.
Either the human-reviews-and-owns standard applies throughout, or it
does not. Apply it consistently here. Substantive requirement (commit
messages must explain what and why) is preserved.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
Carve-outs should be bounded. "Existing" floats forward as new bots
get approved, so the exception never closes.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
Blanket non-acceptance forbids good-faith fixes (typos, broken links,
outdated commands). Maintainer review already provides the consistency
guard the rule is reaching for.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
"Stricter" needs a named axis, otherwise rules that tighten one
dimension while loosening another get labeled stricter case by case
with no principled criterion.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
"Not accepted by default" implies an override path, but the policy
only gestures at AGENTS.md without naming what makes a permission
valid. Replace the gesture with operational requirements: scoped
actions, named maintainer owner, identifiable agent, revocability.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
DCO has 20 years of precedent and tested practice. The AI assurance
analog has neither. Treat the comparison as a working analogy rather
than a settled equivalence so contributors do not assume protections
the AI side has not accumulated.

Signed-off-by: Stephen Augustus <foo@auggie.dev>
Comment thread policies/ai.md Outdated
Comment thread policies/ai.md

There is no industry standard for AI commit attribution. Current behavior varies across tools: Claude Code and Aider both default to `Co-authored-by:` trailers; GitHub Copilot's coding agent co-authors commits with the developer who assigned the task; other tools (Cursor, Windsurf, OpenAI Codex) either add no attribution by default or do not document their behavior. No major AI coding agent currently defaults to `Generated-by:`.

AI provenance trailers are recommended but not required at the policy level. Individual TIs may require them through their own contribution conventions. AI provenance trailers are additive — they do not replace or conflict with DCO `Signed-off-by:` trailers. Projects using [DCO Bot](https://probot.github.io/apps/dco/) or similar enforcement tools for `Signed-off-by:` are fully compatible with AI provenance trailers.

@arewm arewm Apr 28, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know where the best place to include this is, but DCO signoff should NOT be done by an agent. These should only be done by a human which may be orchestrating the agent.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm... I'm not sure I agree here, but I also don't have a fully-formed opinion here just yet.

If we accept the framing of the policy (that AI is a tool in a contributor's toolbelt, just like any other), then what is the material difference between a human running git commit --signoff and an agent that a human has guided doing the same?

The real risk is an agent signing off without the human's meaningful involvement — but that scenario is already prohibited: autonomous contributions are not accepted by default, and contributors must understand and be able to explain every change they submit. If you can't explain the change, you shouldn't be certifying you have the right to submit it.

Open to debate here; this is just my initial take based on the current iteration of this policy and the DCO itself.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NOTE: This comment is from the perspective of commits. The discussion of human involvement is important for other contributions like comments/issues but it is not as easy to have a clear signal.

I accept that AI is just a tool, but it is a tool that provides new capabilities. With most other tools previously, the tools may have just informed the direction of work for humans to implement or at a maximum, the humans running them needed to verify the output that may have been generated. With LLM based tooling, however, it is easy to not review the changes at all.

I know that this document is worded in terms of meaningful human involvement

If you can't explain the change, you shouldn't be certifying you have the right to submit it.

This seems to pair well with the terminology from the DCO

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

What is not explicitly clear and is therefore up to interpretation is what a minimum human involvement is. If I have a well documented feature definition to constrain a LLM model producing a code change, is that meaningful involvement? I suspect that it isn't. If I use do that same process but I review the output for adherence/conformance to the spec, is the human involvement now meaningful enough? Do you have to iterate back and forth with an LLM as a human for involvement to become meaningful?

Just claiming that a human can explain the change is a much lower bar than how I interpret the DCO. If you have an agent that automatically applies a DCO, there is no required human involvement and its presence becomes meaningless when trying to intuit a human's involvement.

LLM tools are only becoming more integrated with the SDLC and software is being built by harnesses autonomously from prompts. I don't see an inherent issue with that as long as those contributions remain guided by humans (it will always be hard to define what is sufficient human involvement/guidance). The indication that a commit is guided and reviewed by a human is the DCO. If LLMs will auto-apply a DCO then maintainers will not have a signal as to whether a human is in the loop. If we require DCO to be applied by a human as a policy, then maintainers have that signal to fall back on. If we require that a human must apply DCO then detecting the opposite becomes a potentially actionable policy violation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you can't explain the change, you shouldn't be certifying you have the right to submit it.

I'm not sure that holds. The legal right to submit something and knowing what that thing is are only loosely-related. Anyone who has held a conversation of any significant length with me knows that I say all kinds of things that I can copyright, but cannot explain. :-)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And the inverse is true wrt AI generated code. If the code can be explained by the submitter but, they did not influence the generated content in a "significant" way, it's unlikely they can claim copyright.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really think that discussions around things like DCO should involve (if not be left to) lawyers. cc: @mkdolan

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm in favor of agents not being allowed to use DCO. The human that submits the contribution can add their name to the DCO line, but the agent should be on a tool line marker instead.

In general, I tend to favor consistency with Linux, where possible.

Comment thread policies/ai.md Outdated
Comment thread policies/ai.md

### Rationale

Autonomous AI agents can produce high volumes of contributions without the human accountability that open source collaboration depends on. This creates disproportionate review burden, degrades signal-to-noise in issue trackers, and undermines the authentic human engagement that sustains open source communities. No step in the contribution workflow should happen without a human in the loop.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a proposed enforcement mechanism if a user is determined to have used an agentic tool without a human in the loop? Do we need to be explicit about this also applying to maintainers?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no enforcement mechanism specific to this policy — enforcement follows existing OpenSSF governance: the Code of Conduct, TI-level governance processes, and maintainer authority (which the policy explicitly grants — maintainers can close, revert, or remove content).

On whether this applies to maintainers: yes (Guiding Principles section says "all participants — maintainers, contributors, and reviewers.")

I'd prefer not to design a policy-specific enforcement regime at this stage; it would add complexity and the existing governance mechanisms cover the realistic scenarios. I'm happy to discuss if others feel differently.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We were discussing potential enforcement mechanisms within SLSA. Are you trying to say that OpenSSF doesn't want to address enforcement at a foundation level or that any enforcement within the foundation should be deferred until a later date? I assume the former. Within SLSA, for example, we were weighing potential enforcement options which would still be conformant to this policy since it would be a more restrictive policy than what is being established here, correct?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you trying to say that OpenSSF doesn't want to address enforcement at a foundation level or that any enforcement within the foundation should be deferred until a later date? I assume the former.

@arewm — Apologies for the confusion here; it's actually a ✨ secret third thing ✨:

  • None of my capacities (Governing Board member, Technical Advisory Council member, project maintainer, and Steering Committee member) grant me sole authority to speak as the foundation.
  • As a foundation, AFAICT, we do not have a documenting framework for writing/enacting policies. The only published policy in the repo is around GitHub Access Management and it was last updated 3 years ago.

So, consider this response the opinion of a contributor and interested party in improving how we interact with AI tooling:

  • I want the OpenSSF to provide guidance on how maintainers can protect project quality and their bandwidth
  • I want policy guidance that is not so overly restrictive that it impedes innovation, but reasonably strong to provide all projects a consistent baseline to build on top of
  • I want policy guidance that provides a path for remediation, so that [new] contributors do not feel discouraged simply because they are experimenting with what was previously a non-standard/non-existent workflow
  • I want policy language that, as much as possible, treats AI as a another tool in our toolbox, as opposed to non-reusable carve-outs. Today it's AI, but tomorrow it could be something else and our documentation should be durable in the face of that. On the same thread:
  • I want enforcement mechanisms for policy violations that align with or [more preferred,] are embedded within well-known/-understood community health practices for open source governance (e.g., project contribution guidelines, issue/PR templates, foundation-level code of conduct documents/procedures), as opposed to having an embedded, policy-based enforcement route

I say all of that to say: I don't disagree with enforcement being something we should address somewhere, but I'd like to see feedback from my peers in the @ossf/tac and staff members, like @SecurityCRob, before we can make a decision on where those somewheres are.

Comment thread policies/ai.md
Maintainers may:

- Close AI-generated issues that lack genuine use cases or real-world context
- Remove or flag AI-generated review comments that are unsolicited or misleading

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this policy also hold for removing AI generated issue comments as well? Part of the challenge that I have encountered is the tendency of overly verbose agreement, especially if you have multiple autonomous agents communicating back and forth in a single location.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this policy also hold for removing AI generated issue comments as well?

@arewm — Yes, is there language that would better clarify this?

Part of the challenge that I have encountered is the tendency of overly verbose agreement, especially if you have multiple autonomous agents communicating back and forth in a single location.

Are there any examples that you can share of this?
The most recent one that comes to mind for me is #583.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another example from SLSA: slsa-framework/slsa#1594 but some of those same identities were engaging in similar behaviors in in-toto/attestation#549 as well as on issues against personal repositories arewm/refs.arewm.com#1 after I defined a custom provenance buildType.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really appreciate the reference points, @arewm!
Looks like we both ran into the same GitHub "user" 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what it's worth I don't think maintainers need permission to do that. I think that's an inherent prerogative.

Comment thread policies/ai.md Outdated
Comment thread policies/ai.md

For security-specific agent instructions, TIs should reference the [Security-Focused Guide for AI Code Assistant Instructions](https://best.openssf.org/Security-Focused-Guide-for-AI-Code-Assistant-Instructions) published by the OpenSSF Best Practices Working Group.

## Security Considerations

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another security consideration is for maintainers that use AI tooling. Especially if threads get to be long, maintainers might be more likely to use their own tooling to process the large amount of input. This exposes them to prompt injection vulnerabilities especially as comments in issues and pull requests can container hidden HTML which will be processed by the agents even if not seen.

Is this out of scope of the current document?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this out of scope of the current document?

I don't think this is necessarily out-of-scope, but I wonder if operational guidance belongs in a different document? What do you think?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is of course a complex and rapidly evolving space. The defenses that work today will not work "tomorrow" because the attacker moves second. Anyone using AI on OpenSSF projects will hopefully be aware of the risks and work to mitigate them so I think that it makes sense to at least acknowledge those risks in this document. I wouldn't be surprised if these recommendations/concerns grew so that a separate cross-referenced document would be a better organization.

I have interacted with a couple of suspected OpenClaw instances in the SLSA project which brought this concern to the forefront of my mind.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair point on acknowledging the risks, even if we can't immediately address them.
Will update the language around this section.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd love for the AI readiness SIG to work on the operational guidance for this scenario. We can provide minimal guidance here in the meanwhile

justaugustus and others added 3 commits April 29, 2026 03:22
Co-authored-by: Andrew McNamara <andrew@arewm.com>
Signed-off-by: Stephen Augustus <justaugustus@users.noreply.github.com>
Signed-off-by: Stephen Augustus <justaugustus@users.noreply.github.com>
- Strengthen third-party copyrighted material obligations to require
  notice, attribution, and license terms per LF rule ossf#2
- Acknowledge practical challenge of identifying third-party materials
  in AI output, as raised by @lehors
- Add LF Generative AI Policy to References as foundation-level
  guidance
- Reorder references to lead with foundation policies (LF, ASF)
- Remove ASF-specific intro from Legal Obligations since obligations
  now draw from both LF and ASF guidance

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Stephen Augustus <foo@auggie.dev>
@justaugustus

Copy link
Copy Markdown
Member Author

It would make sense to reference the Linux Foundation's Generative AI Policy: https://www.linuxfoundation.org/legal/generative-ai

Even though I think its rule #2 represents a real challenge with many of the existing tools available today [...]

@lehors — Great point; I've added references to the LF policy and challenges in f20ee13.

@justaugustus justaugustus left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@arewm — Thanks for the review!

I made a few light edits based on your feedback and integrated your direct code suggestions, where they were applicable.

Comment thread policies/ai.md
Maintainers may:

- Close AI-generated issues that lack genuine use cases or real-world context
- Remove or flag AI-generated review comments that are unsolicited or misleading

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this policy also hold for removing AI generated issue comments as well?

@arewm — Yes, is there language that would better clarify this?

Part of the challenge that I have encountered is the tendency of overly verbose agreement, especially if you have multiple autonomous agents communicating back and forth in a single location.

Are there any examples that you can share of this?
The most recent one that comes to mind for me is #583.

Comment thread policies/ai.md

For security-specific agent instructions, TIs should reference the [Security-Focused Guide for AI Code Assistant Instructions](https://best.openssf.org/Security-Focused-Guide-for-AI-Code-Assistant-Instructions) published by the OpenSSF Best Practices Working Group.

## Security Considerations

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this out of scope of the current document?

I don't think this is necessarily out-of-scope, but I wonder if operational guidance belongs in a different document? What do you think?

Comment thread policies/ai.md Outdated
Comment thread policies/ai.md

### Rationale

Autonomous AI agents can produce high volumes of contributions without the human accountability that open source collaboration depends on. This creates disproportionate review burden, degrades signal-to-noise in issue trackers, and undermines the authentic human engagement that sustains open source communities. No step in the contribution workflow should happen without a human in the loop.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no enforcement mechanism specific to this policy — enforcement follows existing OpenSSF governance: the Code of Conduct, TI-level governance processes, and maintainer authority (which the policy explicitly grants — maintainers can close, revert, or remove content).

On whether this applies to maintainers: yes (Guiding Principles section says "all participants — maintainers, contributors, and reviewers.")

I'd prefer not to design a policy-specific enforcement regime at this stage; it would add complexity and the existing governance mechanisms cover the realistic scenarios. I'm happy to discuss if others feel differently.

Comment thread policies/ai.md

There is no industry standard for AI commit attribution. Current behavior varies across tools: Claude Code and Aider both default to `Co-authored-by:` trailers; GitHub Copilot's coding agent co-authors commits with the developer who assigned the task; other tools (Cursor, Windsurf, OpenAI Codex) either add no attribution by default or do not document their behavior. No major AI coding agent currently defaults to `Generated-by:`.

AI provenance trailers are recommended but not required at the policy level. Individual TIs may require them through their own contribution conventions. AI provenance trailers are additive — they do not replace or conflict with DCO `Signed-off-by:` trailers. Projects using [DCO Bot](https://probot.github.io/apps/dco/) or similar enforcement tools for `Signed-off-by:` are fully compatible with AI provenance trailers.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm... I'm not sure I agree here, but I also don't have a fully-formed opinion here just yet.

If we accept the framing of the policy (that AI is a tool in a contributor's toolbelt, just like any other), then what is the material difference between a human running git commit --signoff and an agent that a human has guided doing the same?

The real risk is an agent signing off without the human's meaningful involvement — but that scenario is already prohibited: autonomous contributions are not accepted by default, and contributors must understand and be able to explain every change they submit. If you can't explain the change, you shouldn't be certifying you have the right to submit it.

Open to debate here; this is just my initial take based on the current iteration of this policy and the DCO itself.

@justaugustus

Copy link
Copy Markdown
Member Author

This is a thoughtful and timely policy direction, and establishing a consistent foundation-wide stance on AI-assisted contributions makes sense given how quickly agent-supported development is evolving.

And as I mentioned on our call, there are a few practical concerns from the perspective of smaller or resource-constrained Technical Initiatives. [...]

Thanks for your comments on the call and quick follow-up here, @TracyRagan!

A few notes on how the current draft addresses some of the concerns you've raised:

  • Automation vs. autonomy: The policy (in its current form) exempts all GitHub Apps and bots authorized through OpenSSF governance prior to the effective date (Dependabot, Scorecard, CI bots, etc.). These are explicitly not subject to this policy. For new automation, TIs can permit specific autonomous behaviors through their AGENTS.md with scoped, documented, maintainer-owned configurations. That said, I think you're right that we could do a better job distinguishing deterministic automation (e.g., a bot that bumps a dependency version) from generative AI autonomy (e.g., an agent that writes and submits code independently). I'll look at clarifying that distinction in the glossary or autonomous contributions section.
  • Maintainer overhead: The disclosure model was revised to not require disclosure by default — AI tool use is treated as workflow. Disclosure is only required when the normal accountability assumption breaks down (autonomous contributions or unreviewed AI-produced content). This should minimize overhead for bandwidth-limited teams.
  • AGENTS.md: The policy uses "should" (recommended), not "must." TIs can adopt it when it makes sense for them.
  • Exception pathway: The exception process uses "Content-type review" (72h, 3 approvers) rather than "Major" — designed to be lightweight.

I agree with your framing of "guardrails with flexibility at the TI level" — that's the intent.
Happy to add language that makes that positioning more explicit.

Comment thread policies/ai.md
- Do tests/verification cover the change?
- Can the author explain the design and tradeoffs?
- Has the contributor disclosed AI usage as required?
- Any license/provenance red flags? (Review AI output for copied snippets, unusual style, or comments referencing other projects)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is much harder in practice and we are already seeing it in the wild. See microsoft/agent-governance-toolkit#748 (comment) for reference. A (presumed) autonomous agent posted to an issue claiming that they have been working on something similar. The project maintainer accepted the contributions which later were revealed to be reactive clone. Only after that call-out did the (presumed) autonomous agent admit the connection and add the attribution.

This line may still be good to include for maintainers to fall back on for a rationale to close/revert contributions, but I suspect that it would be too much burden for maintainers to carefully consider at every contribution. Agents submitting work are not always honest/complete with their attributions.

Comment thread policies/ai.md Outdated
For machine-parseable provenance tracking, two conventions exist in the ecosystem:

- `Generated-by: <tool>` — Recommended by the [Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html). This is a provenance marker indicating which tool was used. It does not imply authorship.
- `Co-authored-by: <tool>` — Widely used in practice and rendered by GitHub's UI. However, this implies co-authorship, which raises unresolved questions about whether AI development tools can hold authorship or copyright.

@funnelfiasco funnelfiasco Apr 29, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this implies co-authorship, which raises unresolved questions about whether AI development tools can hold authorship or copyright.

I would not call this an "unresolved question." Courts have been pretty consistent that copyright comes from human activity (see, for the most famous example, the "Monkey selfie case"). Until that's overturned, the question is resolved: AI tools cannot hold copyright.

(I am not a lawyer, so if someone here is one and wants to tell me I'm wrong, I'll accept it)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Given that 'author' is a copyright term that is often the employer, it feels complex to include 'co-authored', and doubly complex as Ben points out to have that refer to a tool.

@funnelfiasco

Copy link
Copy Markdown
Contributor

There's a bit of a mismatch between the title and the content here. The policy is generally on AI contributions, but the title talks about "usage" would reasonably include bots for issue triage, security review, etc. I think the scope of the current proposal is good, so making it clear that it's an AI contribution policy is probably sufficient for now.

Co-authored-by: Andrew McNamara <andrew@arewm.com>
Signed-off-by: Stephen Augustus <justaugustus@users.noreply.github.com>
Comment thread policies/ai.md Outdated
Co-authored-by: David A. Wheeler <dwheeler@dwheeler.com>
Signed-off-by: Stephen Augustus <justaugustus@users.noreply.github.com>
Comment thread policies/ai.md
- **Keep it maintained.** An outdated `AGENTS.md` is worse than none — it will produce contributions that don't match current project expectations. Treat it as a living document alongside `CONTRIBUTING.md`.
- **Maintainer-controlled.** `AGENTS.md` and other agent configuration files are maintained by project maintainers. Pull requests from external contributors that modify agent configuration files require explicit maintainer review and approval. This prevents tool-specific config sprawl and keeps agent instructions consistent with the project's contribution standards, while still allowing good-faith fixes (typos, broken links, outdated commands) to be reviewed on their merits.

For security-specific agent instructions, TIs should reference the [Security-Focused Guide for AI Code Assistant Instructions](https://best.openssf.org/Security-Focused-Guide-for-AI-Code-Assistant-Instructions) published by the OpenSSF Best Practices Working Group.

@mlieberman85 mlieberman85 May 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we might want to throw in there that files like AGENTS.md should also be considered security sensitive or in some way privileged. There's been a bunch of research lately showing that attacks against AGENTS.md and things like memory files are an effective way of getting AI agents whether they're on a contributor's workstation or as part of an agentic flow like copilot to act maliciously.

In absence of any specific guidance, I think recommending its treated the same way as any other sensitive file, e.g., CODEOWNERS or a Github action would be a good idea.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mlieberman85 - a change to any file could be a security concern, though. Are you simply suggesting that "reviewers should especially look at changes this in this file when reviewing"? Or are you thinking of something more specific/enforced, e.g., adding branch protection rules that require additional rules when changing this file? Beware: Many agents have an agent-specific file you'd need to protect if you mean the latter, e.g., "CLAUDE.md" for Claude Code, etc.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm leaning towards specific branch protection rules for changes to AGENTS.md and similar files. Maybe a specific CI workflow that would use AI to analyze the changes to these files, triggered by maintainers after reviewing the PR (to prevent prompt injection)?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mihaimaruseac - that makes sense! Can we clarify this text to make that more obvious?

@mihaimaruseac mihaimaruseac left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you so much for writing this!

Comment thread policies/ai.md

1. **AI-autonomous contributions** (see [AI-Autonomous Contributions](#ai-autonomous-contributions)): the contribution lacks a human who directed the work and reviewed the specific output.
2. **Unreviewed AI-produced content**: the contributor is submitting AI-produced content they have not meaningfully reviewed and cannot fully explain. For example, a large generated change the contributor is asking maintainers to evaluate without having walked through it themselves.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. I think something like what Linux proposed, where agents and tools used are listed in a single line should be the minimum:

Assisted-by: Claude:claude-3-opus coccinelle sparse

Kubevirt, as one example, has a list of cases that requires disclosure, but I think that this will become burdensome to check for large PRs, but individual TIs might want to require for all/some of their projects.

Comment thread policies/ai.md

### Pull Request Disclosure

Pull request templates should include at minimum:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 to adding this to AGENTS.md in the repo. We need it in all OpenSSF repos, and I think the new AI preparedness SIG can get all OpenSSF repos there.

I am also in favor of adding it to the PR template, as a final check, in case the AGENTS.md rule gets dropped out of context after compaction, etc.

Comment thread policies/ai.md Outdated

- `Generated-by: <tool>` — Recommended by the [Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html). This is a provenance marker indicating which tool was used. It does not imply authorship.
- `Co-authored-by: <tool>` — Widely used in practice and rendered by GitHub's UI. However, this implies co-authorship, which is inconsistent with established copyright law holding that copyright requires human creative activity — AI tools cannot hold authorship or copyright.
- `Assisted-by: <agent>:<model_version> [tool1] [tool2]` — Emerging convention adopted by OpenSSF TIs including Sigstore and SLSA. Indicates AI assistance without implying authorship. Example: `Assisted-by: Claude:claude-4.5-sonnet`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also Linux's convention, so I'm in favor of this option

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree! At least note it.

Comment thread policies/ai.md
- `Co-authored-by: <tool>` — Widely used in practice and rendered by GitHub's UI. However, this implies co-authorship, which is inconsistent with established copyright law holding that copyright requires human creative activity — AI tools cannot hold authorship or copyright.
- `Assisted-by: <agent>:<model_version> [tool1] [tool2]` — Emerging convention adopted by OpenSSF TIs including Sigstore and SLSA. Indicates AI assistance without implying authorship. Example: `Assisted-by: Claude:claude-4.5-sonnet`.

TIs adopting commit trailers that include vendor or tool names should be aware that third parties may use the presence of these trailers in merged commits to publicly claim that a project uses or endorses their product. Some projects (notably [Kubernetes](https://www.k8s.dev/docs/guide/pull-requests/#ai-guidance)) have banned AI commit trailers for this reason. TIs should weigh provenance tracking benefits against this marketing risk when deciding whether to require trailers.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think another risk is that people might write automation to filter out projects with AI contribution from their list of dependencies. Hopefully this sentiment will go away in time.

Comment thread policies/ai.md

There is no industry standard for AI commit attribution. Current behavior varies across tools: Claude Code and Aider both default to `Co-authored-by:` trailers; GitHub Copilot's coding agent co-authors commits with the developer who assigned the task; other tools (Cursor, Windsurf, OpenAI Codex) either add no attribution by default or do not document their behavior. No major AI coding agent currently defaults to `Generated-by:`.

AI provenance trailers are recommended but not required at the policy level. Individual TIs may require them through their own contribution conventions. AI provenance trailers are additive — they do not replace or conflict with DCO `Signed-off-by:` trailers. Projects using [DCO Bot](https://probot.github.io/apps/dco/) or similar enforcement tools for `Signed-off-by:` are fully compatible with AI provenance trailers.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm in favor of agents not being allowed to use DCO. The human that submits the contribution can add their name to the DCO line, but the agent should be on a tool line marker instead.

In general, I tend to favor consistency with Linux, where possible.

Comment thread policies/ai.md

When a PR does not meet project standards, maintainers should first engage with the contributor — ask clarifying questions, request changes, and give the contributor a chance to demonstrate understanding. If the contributor is unwilling or unable to adhere to the project's contribution standards, maintainers may close the PR with a respectful rationale (per [Kubernetes norms](https://www.k8s.dev/docs/guide/pull-requests/)). The close message should reference this policy and offer the contributor the opportunity to reopen the PR if they are willing to meet the project's expectations.

For obvious spam or fully autonomous submissions with no human behind them, immediate closure is appropriate as a defensive measure.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this was partially discussed in https://github.com/ossf/tac/pull/605/changes#r3157433037.

I'm in favor of having a baseline of closure and maybe enforced timeout at the OpenSSF level, with TIs being able to define banning contributors on more stringent rules.

Comment thread policies/ai.md
- **Reduce the attack surface for low-quality AI contributions proactively:**
- Keep `CONTRIBUTING.md`, `README.md`, and issue templates current — outdated or vague guidance increases the likelihood that AI agents produce off-target submissions.
- Minimize unnecessary dependency sprawl — each dependency is an additional surface for automated "bump" or "fix" PRs.
- Use clear, specific "good first issue" labels and remove stale ones — AI agents often target these labels for automated issue claiming.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. I'm in favor of policy allowing issue reclaiming if an agent claims a "good first issue". It should be frowned upon, as it harms onboarding chances for new contributor, resulting in lowering the bus factor and harms to project logevity.

Comment thread policies/ai.md
- **Keep it maintained.** An outdated `AGENTS.md` is worse than none — it will produce contributions that don't match current project expectations. Treat it as a living document alongside `CONTRIBUTING.md`.
- **Maintainer-controlled.** `AGENTS.md` and other agent configuration files are maintained by project maintainers. Pull requests from external contributors that modify agent configuration files require explicit maintainer review and approval. This prevents tool-specific config sprawl and keeps agent instructions consistent with the project's contribution standards, while still allowing good-faith fixes (typos, broken links, outdated commands) to be reviewed on their merits.

For security-specific agent instructions, TIs should reference the [Security-Focused Guide for AI Code Assistant Instructions](https://best.openssf.org/Security-Focused-Guide-for-AI-Code-Assistant-Instructions) published by the OpenSSF Best Practices Working Group.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm leaning towards specific branch protection rules for changes to AGENTS.md and similar files. Maybe a specific CI workflow that would use AI to analyze the changes to these files, triggered by maintainers after reviewing the PR (to prevent prompt injection)?

Comment thread policies/ai.md

For security-specific agent instructions, TIs should reference the [Security-Focused Guide for AI Code Assistant Instructions](https://best.openssf.org/Security-Focused-Guide-for-AI-Code-Assistant-Instructions) published by the OpenSSF Best Practices Working Group.

## Security Considerations

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd love for the AI readiness SIG to work on the operational guidance for this scenario. We can provide minimal guidance here in the meanwhile

Comment thread policies/ai.md
- **Regulatory or compliance requirements**: Projects subject to specific regulatory obligations
- **Maintainer capacity constraints**: Projects where the maintainer team has explicitly documented that AI-assisted contribution volume exceeds review capacity

### Process

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, I think having to follow this formal process might make some TI uneager to add stricter policies that would benefit the project, just because of the additional time needed for the process.

Instead, we can have a resolution process, in case there is a conflict between the OpenSSF policy and the TI policy and someone raises the conflict.

Optionally, the TIs could include adoption of an AI policy in the quarterly TAC reports

@marcelamelara marcelamelara added the Major / New TI Changes to Charter/Technical Strategy/TI Lifecycle process, new TI. Needs 7 approvals, 15d review. label May 25, 2026

@marcelamelara marcelamelara left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@justaugustus thank you! I've got a couple of small changes I'd like to see before this is merged, but otherwise I think this policy is a greta first draft!

Comment thread policies/ai.md Outdated
Comment thread policies/ai.md

The following autonomous agent behaviors are not acceptable:

- **Automated PR submission**: Agents opening pull requests without a human reviewing and approving the specific changes before submission

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've heard of a few cases where agents submit vulnerability fixes without going through proper reporting channels. This is related but I think separate from Automated PR submission.

Comment thread policies/ai.md

### Exceptions

**GitHub Apps and bots authorized through OpenSSF governance processes prior to the effective date of this policy** (e.g., Dependabot, Scorecard, CI bots) are not subject to this policy. They predate it and are governed by their own approval processes. Bots authorized on or after that date are subject to this policy and must satisfy its requirements through whatever autonomous-behavior pathway the policy provides.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Comment thread policies/ai.md

## AGENTS.md in OpenSSF Repositories

OpenSSF repositories should include an `AGENTS.md` file to set expectations for AI agent behavior.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to make this a requirement for mature Tis (e.g., at Graduated stage)? Either way, we probably want to add a line for TIs to point to their AGENTS.md file along with the other URLs in the lifecycle doc templates.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this needs to be required. Projects have an inherent interest in doing so since it is for their own good.

Comment thread policies/ai.md
- Identify the agent's account or bot username so reviewers can recognize it in the contribution stream.
- Be revocable by any maintainer if the behavior produces low-quality, off-target, or harmful output.

Permitted autonomous behaviors do not waive DCO, contributor responsibility, or the maintainer's authority to close or revert outputs. A TI may not use this mechanism to permit categories of autonomous activity that this policy explicitly prohibits in the [Details](#details) section above.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to the comments above: this may be too restrictive. I'd remove or soften this restriction and give TIs a process to allowing certain kinds of bots.

@torgo

torgo commented May 27, 2026

Copy link
Copy Markdown
Contributor

I really like this document. It mirrors work that is happening in various open tech communities around the web - a lot of which has been referenced. Another example that I've been involved with is the "Use of Large Language Models in Standards Work" group note from the W3C Advisory Board. My overall concern with the document is that it's quire long.

I would like to make some suggestions about making this document a bit more accessible and understandable to readers who may be coming to it fresh. This will help people understand what requirements it puts on them, as well as helping it influence the larger discussion going on in the industry.

In many places in the document, it uses language that sounds like a requirement, e.g. "OpenSSF repositories should include an AGENTS.md file to set expectations for AI agent behavior." I think it should be made very clear which things are requirements, which are recommendations, and to whom those requirements / recommendations applies. This could be done using formatting. This will make it easier to skim the document and understand what the policy statements are and whether they apply to the reader or not.

Does that make sense? If so, I'm happy to leave some specific PRs.

Comment thread policies/ai.md Outdated
Comment thread policies/ai.md Outdated
Co-authored-by: Marcela Melara <marcela.melara@intel.com>
Co-authored-by: David A. Wheeler <dwheeler@dwheeler.com>
Co-authored-by: Stephen Augustus <justaugustus@users.noreply.github.com>
Signed-off-by: Stephen Augustus <justaugustus@users.noreply.github.com>
Comment thread policies/ai.md
- `Co-authored-by: <tool>` — Widely used in practice and rendered by GitHub's UI. However, this implies co-authorship, which is inconsistent with established copyright law holding that copyright requires human creative activity — AI tools cannot hold authorship or copyright.
- `Assisted-by: <agent>:<model_version> [tool1] [tool2]` — Emerging convention adopted by OpenSSF TIs including Sigstore and SLSA, as well as [the Linux kernel](https://docs.kernel.org/process/coding-assistants.html). Indicates AI assistance without implying authorship, as a space-separated list of AGENT_NAME:MODEL_VERSION. Example: `Assisted-by: Claude:claude-4.5-sonnet`.

TIs adopting commit trailers that include vendor or tool names should be aware that third parties may use the presence of these trailers in merged commits to publicly claim that a project uses or endorses their product. Some projects (notably [Kubernetes](https://www.k8s.dev/docs/guide/pull-requests/#ai-guidance)) have banned AI commit trailers for this reason. TIs should weigh provenance tracking benefits against this marketing risk when deciding whether to require trailers.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that really the reason K8s bans AI commit trailers? Their cited doc doesn't say that. They ban machine-readable commit trailers but also require credits to be written as text.

@justaugustus

Copy link
Copy Markdown
Member Author

Thanks everyone for the comments here!

I plan to give this another pass next week to incorporate feedback, including making the policy a bit more concise (I'll likely trim/remove the exceptions section) and take @torgo up on the editing offer once I've done my next pass.

@justaugustus

Copy link
Copy Markdown
Member Author

I plan to give this another pass next week to incorporate feedback

My next review pass is still pending due to a few commitments, but I have shared this draft with @mkdolan and @swinslow to do an official LF Legal review :)

@justaugustus

Copy link
Copy Markdown
Member Author

I plan to give this another pass next week to incorporate feedback

My next review pass is still pending due to a few commitments, but I have shared this draft with @mkdolan and @swinslow to do an official LF Legal review :)

Pinged Steve and Mike this week to remind about this review.

@justaugustus

justaugustus commented Aug 4, 2026

Copy link
Copy Markdown
Member Author

[...] but I have shared this draft with @mkdolan and @swinslow to do an official LF Legal review :)

I have initial feedback from @swinslow and we'll be meeting tomorrow to dig in!

@Santoshkumarpuppala

Copy link
Copy Markdown

I run an AI-assisted pipeline for open-source vulnerability research, and everything it finds goes out through coordinated disclosure. From that angle there is one failure mode I would suggest naming explicitly, and I think it is the "related but separate" case @marcelamelara raised above.

The prohibited-behaviors list frames automated PR submission as a quality and accountability problem: review burden, signal-to-noise, human-in-the-loop. For security fixes there is a sharper and separate harm. An agent that finds a vulnerability and opens a public PR to fix it has disclosed the vulnerability in the act of fixing it. The diff, the commit message, and any linked issue describe the flaw and point at its exact location before a fixed release exists. That is a premature-disclosure event regardless of how good the fix is, and regardless of whether a human reviewed the code.

So the control that matters here is not "was there a human in the loop" but "did this route through the project's security policy instead of a normal PR." Those are different gates. A human-guided, well-reviewed, DCO-signed PR still causes the harm if the change is security-relevant and the underlying issue was not already public.

Concretely, I would suggest the policy state that AI-generated changes which fix a security-relevant defect should follow the TI's coordinated-disclosure process (SECURITY.md / private advisory) rather than being opened as a public pull request, and that maintainers may close such a PR and redirect it to the security channel. This belongs under Security Considerations rather than the general autonomous-contributions section, because it applies even when the contribution is fully compliant with everything else in the policy.

Happy to draft that paragraph if it is useful.

Comment thread policies/ai.md

- `Generated-by: <tool>` — Recommended by the [Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html). This is a provenance marker indicating which tool was used. It does not imply authorship.
- `Co-authored-by: <tool>` — Widely used in practice and rendered by GitHub's UI. However, this implies co-authorship, which is inconsistent with established copyright law holding that copyright requires human creative activity — AI tools cannot hold authorship or copyright.
- `Assisted-by: <agent>:<model_version> [tool1] [tool2]` — Emerging convention adopted by OpenSSF TIs including Sigstore and SLSA, as well as [the Linux kernel](https://docs.kernel.org/process/coding-assistants.html). Indicates AI assistance without implying authorship, as a space-separated list of AGENT_NAME:MODEL_VERSION. Example: `Assisted-by: Claude:claude-4.5-sonnet`.

@david-a-wheeler david-a-wheeler Aug 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Linux kernel's version of this convention is more rigorous and is checked by scripts/checkpatch.pl, and the previous MODEL_VERSION example was misleading: claude-4.5-sonnet is not a valid identifier in any Anthropic naming scheme (the real ID for that model is claude-sonnet-4-5). I propose adopting the Linux kernel's format:

Suggested change
- `Assisted-by: <agent>:<model_version> [tool1] [tool2]` — Emerging convention adopted by OpenSSF TIs including Sigstore and SLSA, as well as [the Linux kernel](https://docs.kernel.org/process/coding-assistants.html). Indicates AI assistance without implying authorship, as a space-separated list of AGENT_NAME:MODEL_VERSION. Example: `Assisted-by: Claude:claude-4.5-sonnet`.
- `Assisted-by: <agent>:<model_version> [tool1] [tool2]` — Emerging convention adopted by [the Linux kernel](https://docs.kernel.org/process/coding-assistants.html), which validates the format in `scripts/checkpatch.pl`. Indicates AI assistance without implying authorship. The value is a single `AGENT_NAME:MODEL_VERSION` pair followed by an optional space-separated list of specialized analysis tools; basic tooling such as git, compilers, and editors is not listed. `MODEL_VERSION` must be the model identifier the vendor publishes, copied verbatim (the string you would pass as the model parameter to the vendor's API). Don't reformat, abbreviate, or prettify the identifier. Where a vendor publishes both a moving alias and a dated snapshot, prefer the more specific one. If multiple agents assisted, give each its own line. OpenSSF TIs including Sigstore and SLSA already use `Assisted-by` with a less structured value; we recommend TIs adopt the Linux kernel format. Example: `Assisted-by: Claude:claude-opus-5`.

Supporting evidence, for anyone who wants to check the claims above:

The kernel defines and checks the format

  • Documentation/process/coding-assistants.rst
    specifies Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2], says the
    bracketed entries are optional specialized analysis tools (coccinelle, sparse,
    smatch, clang-tidy), and states that basic development tools should not be
    listed.
  • checkpatch: add support for Assisted-by tag
    adds the check now in mainline: each Assisted-by: line whose value does not
    match ^\S+:\S+ gets Assisted-by expects 'AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]' format. Because the first token must contain a colon, an agent is
    syntactically distinguishable from a tool.

Multiple agents get one line each

Sigstore and SLSA use the trailer, with a laxer syntax

  • Sigstore: docs: improve inline docs
    uses Assisted-by: Claude Sonnet 4.6. Every one of the 19 sigstore commits
    I sampled carries that identical value: a display name, with no agent and no
    vendor model ID.
  • SLSA: feat: organize CLI help commands into logical groups
    uses Assisted-by: Claude Code, naming the agent with no model at all.
  • Neither form satisfies the kernel's ^\S+:\S+ check, which is why the
    proposed text credits those projects with adopting the trailer while
    attributing the value grammar to the kernel.

Comment thread policies/ai.md

### Commit Trailers

For machine-parseable provenance tracking, three conventions exist in the ecosystem:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For machine-parseable provenance tracking, three conventions exist in the ecosystem:
For machine-parseable provenance tracking, three conventions exist in the ecosystem (we recommend `Assisted-by` below):

Comment thread policies/ai.md

For machine-parseable provenance tracking, three conventions exist in the ecosystem:

- `Generated-by: <tool>` — Recommended by the [Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html). This is a provenance marker indicating which tool was used. It does not imply authorship.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `Generated-by: <tool>` — Recommended by the [Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html). This is a provenance marker indicating which tool was used. It does not imply authorship.
- `Generated-by: <tool>` — Recommended by the [Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html). This is a provenance marker indicating which tool was used. It does not imply authorship. Unfortunately, its name suggests that the proposal was solely generated by AI, which is not always the case.

@justaugustus

Copy link
Copy Markdown
Member Author

Quick updates here...

I have a list of recommendations to work through and will also be splitting this into two documents:

  • the policy itself (short and to-the-point)
  • FAQ / explainer with rationales, considerations, etc.

As this was one of the most consistent requests, we'll be recommending the following for attribution for AI assistance:

Assisted-by: <agent>:<model_version> [tool1] [tool2]

in line with the Linux kernel guidance.

@chrisxie-fw

Copy link
Copy Markdown

Following up on the invitation in #628 — a suggestion for the Commit Trailers section of policies/ai.md.

The section covers the declaration layer well. Worth considering one short addition acknowledging the verifiable layer above trailers, so the policy has a place for it as tooling matures. Trailers are self-attested — nothing prevents them being wrong, absent, or lost in a rebase/squash. For TIs that want provenance they can check rather than trust, a signed attestation can carry the same identifier plus its context, cross-checkable against the trailer. Suggested text, to append at the end of the Commit Trailers section:

Verifiable provenance. Commit trailers are self-attested declarations. Where tooling supports it, TIs may additionally record AI provenance as a signed attestation (e.g. an in-toto predicate) that binds the same AGENT_NAME:MODEL_VERSION identifier — along with context such as the model, prompt fingerprint, checks executed, and human approvals — to the artifact digests. An attestation complements rather than replaces the trailer: the trailer is the human-readable declaration, the attestation the machine-verifiable evidence, and a mismatch between them is itself a useful review signal. This mirrors the existing pairing of DCO Signed-off-by: (declaration) with cryptographic commit signing (evidence). No standard predicate exists yet; draft work in this direction includes the vendor-neutral openfab/generation predicate (discussion: #628). Verifiable provenance is optional at the policy level and, like trailers, additive to DCO.

A side-benefit for the marketing-risk concern the section notes: a verifiable attestation makes third-party "project X uses our tool" claims checkable — the attestation records exactly what was used and for which commits, no more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Major / New TI Changes to Charter/Technical Strategy/TI Lifecycle process, new TI. Needs 7 approvals, 15d review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.