Skip to content

Commit 716c7ad

Browse files
committed
chore: address blog review - soften claims, add limitations, fix semantics
1 parent 0bb9805 commit 716c7ad

1 file changed

Lines changed: 38 additions & 18 deletions

File tree

docs/blog/posts/ai-attribution-governance.md

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,24 @@ But until now, there has been **no tool at the CI level** to enforce whatever
2525
policy a project chooses.
2626

2727
Commit Check v2.11.0 introduces **AI Attribution Governance** — a
28-
first-of-its-kind feature that detects known AI tool signatures in commit
28+
new feature that detects known AI tool signatures in commit
2929
messages and lets projects decide whether to forbid them outright.
30+
To our knowledge, no existing tool enforces this kind of policy at the CI
31+
level.
3032

3133
<!-- more -->
3234

3335
## The industry need
3436

3537
The conversation around AI disclosure is no longer theoretical:
3638

37-
- The **Linux kernel** standardized on the `Assisted-by:` trailer format
39+
- The **Linux kernel** standardized on the `Assisted-by:` trailer format — but deliberately stopped short of CI enforcement. As Sasha Levin noted at the Maintainers Summit, the kernel sets the convention, not the gate.
3840
- The **Python community** [is actively discussing](https://discuss.python.org/t/should-claude-codes-usage-be-described-in-the-code-docs-somewhere/107969) whether Claude Code usage should be documented
3941
- **VS Code** [issue #313962](https://github.com/microsoft/vscode/issues/313962) proposes replacing `Co-authored-by` with `Assisted-by` for AI agents
40-
- **Fedora, Apache, OpenTelemetry, Rocky Linux, QEMU, Gentoo** each have different AI contribution policies
42+
- **Fedora** requires AI disclosure (recommends the `Assisted-by` trailer). **QEMU** and **Gentoo** go further and **forbid** AI-generated contributions entirely.
4143

42-
But nobody had built a neutral enforcement layer that works in CI — until now.
44+
Each community defines its own policy — but none provides a neutral
45+
enforcement layer. That is the gap Commit Check fills.
4346

4447
## Configuration: a single toggle
4548

@@ -71,9 +74,12 @@ Two modes:
7174
| `"ignore"` | No validation (default, backward compatible) |
7275
| `"forbid"` | Rejects any commit containing known AI tool signatures |
7376

74-
There is no `require` mode or `ai_trailer_style` option — the signature
75-
database recognizes all known formats automatically, and the policy is simply
76-
whether you allow them or not.
77+
There is no `require` mode in this release — only `ignore` and `forbid`. The
78+
reason is pragmatic: requiring a `Assisted-by` or similar trailer is a
79+
substantially harder problem (validating semantics, not just pattern-matching),
80+
and the most immediate demand from projects is the ability to say **no**. The
81+
kernel and Fedora communities that want `require` are on the roadmap (see
82+
[What's next](#whats-next)).
7783

7884
## Detected AI tool signatures
7985

@@ -100,10 +106,10 @@ A `Co-authored-by: Claude` could theoretically be a human named Claude — but
100106
in practice, AI tools use known noreply email addresses. Commit Check anchors
101107
its detection to these, so:
102108

103-
`Co-authored-by: Claude <noreply@anthropic.com>`flagged
104-
`Assisted-by: Claude:claude-sonnet-4-20250514 [tools]`flagged
105-
`Co-authored-by: Claude Monet <monet@impressionism.fr>`**not flagged**
106-
`Co-authored-by: Jane Doe <jane@example.com>`**not flagged**
109+
🚫 `Co-authored-by: Claude <noreply@anthropic.com>`**detected**
110+
🚫 `Assisted-by: Claude:claude-sonnet-4-20250514 [tools]`**detected**
111+
`Co-authored-by: Claude Monet <monet@impressionism.fr>`**ignored**
112+
`Co-authored-by: Jane Doe <jane@example.com>`**ignored**
107113

108114
The kernel-style `Assisted-by:` format also handles optional trailing tool
109115
lists correctly:
@@ -142,24 +148,40 @@ Co-authored-by: Jane Doe <jane@example.com>" | commit-check -m
142148

143149
## Integration across the ecosystem
144150

145-
The feature is available across every surface of Commit Check:
151+
The feature is available across nearly every surface of Commit Check:
146152

147153
- **CLI**: `--ai-attribution=forbid`
148154
- **TOML config**: `[commit] ai_attribution = "forbid"`
149155
- **Environment variables**: `CCHK_AI_ATTRIBUTION=forbid`
150156
- **Python API**: `validate_message()` returns AI attribution results
151157
- **`--format json`**: AI check status included in structured output
152158
- **MCP Server** ([commit-check-mcp](https://github.com/commit-check/commit-check-mcp)): synced in v0.1.7
153-
- **GitHub Action** ([commit-check-action](https://github.com/commit-check/commit-check-action)): available once the underlying dependency is updated
159+
- **GitHub Action** ([commit-check-action](https://github.com/commit-check/commit-check-action)): coming in the next release
160+
161+
## Scope and limitations
162+
163+
AI Attribution Governance detects the **default behavior** of AI coding tools
164+
— the trailers, markers, and metadata they add automatically. It is not
165+
designed to catch intentional circumvention. If a developer manually removes
166+
the AI signature before committing, this feature will not flag it.
167+
168+
This is the same trust boundary that every linter operates within:
169+
`--no-verify` bypasses pre-commit hooks, and a determined author can always
170+
rewrite history. The goal is to **set a visible, enforceable policy** for the
171+
standard case — making AI disclosure the path of least resistance — and leave
172+
intentional evasion to code review and engineering culture.
154173

155174
## What's next
156175

157176
AI attribution governance in v2.11.0 is the foundation. Future work includes:
158177

159-
1. **PR summaries** — show AI disclosure status per commit in pull requests
160-
2. **MCP improvements** — AI agents query `describe_validation_rules` to
178+
1. **`require` mode** — reject commits that are missing an `Assisted-by`
179+
trailer, serving projects like the Linux kernel and Fedora that mandate
180+
disclosure
181+
2. **PR summaries** — show AI disclosure status per commit in pull requests
182+
3. **MCP improvements** — AI agents query `describe_validation_rules` to
161183
auto-comply before writing a commit
162-
3. **Richer JSON metadata** — structured AI signature data for SBOM and audit
184+
4. **Richer JSON metadata** — structured AI signature data for SBOM and audit
163185
tooling
164186

165187
## Try it today
@@ -178,6 +200,4 @@ ai_attribution = "forbid"
178200

179201
And let CI enforce your AI disclosure policy — automatically, on every commit.
180202

181-
---
182203

183-
*Clean commits. Clear standards. Transparent AI contributions.*

0 commit comments

Comments
 (0)