Table of Contents generated with DocToc
Projects disagree on how a commit records that an agent helped write it. The ASF convention is a Generated-by: trailer; other projects use Assisted-by:, GitHub's Co-authored-by:, or no trailer at all. Magpie does not pick one for everybody. The project chooses when it adopts Magpie, and a contributor chooses only where the project leaves the choice open. Every skill that commits, and the agent-guard commit-trailer guard, resolve the convention the same way, described here.
convention | Trailer the agent adds | Used by |
|---|---|---|
generated-by | Generated-by: {agent} ({model}) | The ASF (Generative Tooling guidance); the default |
assisted-by | Assisted-by: {agent}:{model} | Projects that name the tool without implying generation |
co-authored-by | Co-authored-by: {agent} <{email}> | GitHub‘s co-author form; several agent harnesses’ own default |
none | no trailer | Projects that record agent use elsewhere, or not at all |
custom | the template value | Anything else |
{agent} is the agent harness and {model} the model actually running, e.g. Claude Code and Claude Opus 4.8. {email} is the address the harness uses for itself as a co-author. Only co-authored-by needs it. A template value overrides the default wording of any convention, and custom requires one.
One small TOML file per layer:
| Layer | File | Committed? |
|---|---|---|
| Project | .apache-magpie-overrides/commit-attribution.toml | Yes — set by setup adopt |
| Contributor | commit-attribution.toml in the personal layer (<git-common-dir>/apache-magpie/, or .apache-magpie-local/ once adopted) | No — set by setup config |
# generated-by | assisted-by | co-authored-by | none | custom # The project file may also say contributor-choice. convention = "generated-by" # Optional; required when convention = "custom". # template = "Generated-by: {agent} ({model})"
projects/_template/commit-attribution.toml is the scaffold both layers start from.
This is the one configuration file where the project wins, not the contributor's local copy (the general rule in agentic overrides is local-wins, per file). Attribution is a project policy first: a project that requires Generated-by: must be able to rely on it.
convention other than contributor-choice, that is the convention.convention key, or says contributor-choice — the contributor file's convention applies.generated-by.Fail closed: a file that cannot be read or parsed, or a value that is not one of the conventions above, resolves to generated-by. contributor-choice in the contributor's own file is not a convention and resolves the same way.
Always with git commit --trailer, never by typing it into the message body or the -F <file>:
git commit -F "$TMPDIR/commit-msg.txt" --trailer "Generated-by: Claude Code (Claude Opus 4.8)"
--trailer puts the line in the trailer block with the separating blank line git expects. It also keeps it on the command line, where the agent-guard and any other hook that inspects the command can see it, even when the body travels in a file. For none, pass no --trailer.
The agent-guard commit-trailer guard blocks a git commit that carries Co-Authored-By: (in the message, a -F <file>, or a --trailer) unless the resolved convention for the repository being committed to is co-authored-by. It follows git -C <dir> to that repository. The per-command override MAGPIE_ALLOW_COAUTHOR=1 still works.
This is a policy aid, not a security boundary. A contributor can relax the guard with their own gitignored file whenever the project leaves the choice open. It reads a -F <file> message only if the file exists when the command starts, so a file written earlier in the same command line is not checked.
setup adopt asks the maintainer which convention the project uses, including contributor-choice, and writes the project file.setup config asks a contributor for their preference only when the project leaves it open.--trailer. Skills that review someone else's commits check them against the same resolved convention.generated-by in its own .apache-magpie-overrides/commit-attribution.toml, so contributions to Magpie follow the ASF convention whatever a contributor prefers elsewhere.