No Comment / study, 2026-10-06
13.8% of Claude-co-authored commits leave comments that narrate the chat. In 2021 code: 0.5%.
We sampled 400 public GitHub commits whose message carries Co-Authored-By: Claude (Sept 2026) and 400 commits from March 2021, before AI coding agents, one commit per repository. Then we ran the same comment scanner No Comment uses over every added line in source files.
| Metric | Claude co-authored, 2026 | Baseline, 2021 |
|---|---|---|
| Commits sampled (one per repo) | 400 | 400 |
| Lines added in source files | 404,632 | 223,216 |
| Median comment share per commit | 8.5% | 4.9% |
| Commits where over 25% of added lines are comments | 13.3% | 9% |
| Pooled comment share (incl. docstrings / JSDoc) | 10.6% | 7.9% |
| Pooled comment share (excl. doc comments) | 5.5% | 5.5% |
| Commits with a comment narrating the chat or edit | 55 (13.8%) | 2 (0.5%) |
| Narrating comments per 1,000 added lines | 0.4 | 0.01 |
What we found
- The typical AI commit is more comment-heavy. The median comment share is 1.7× the 2021 baseline, and more commits cross the 25% mark.
- Most of the gap is doc comments, not line comments. Pooled over all lines, non-doc comments are about the same share (5.5% vs 5.5%). The difference sits in docstrings and JSDoc blocks. Big commits dominate pooled numbers, so we also report medians.
- The clear difference is narration. Comments that describe the conversation, the plan or the edit history instead of the code appear in 13.8% of Claude-co-authored commits and almost never in 2021 code. They mean nothing to the next reader, and they are what anthropics/claude-code#65961 (250+ 👍) complains about.
Real examples from the sample
entity — it must appear exactly once (the dedupe risk in the plan). SSO Identity Tower (new — Phase 16) SSO Identity Tower (Phase 16) Phase 2 deployment choices land here. Phase 1 runs no service (D14). Routing advice for the Phase 2 hub. Optional in Phase 1. frontmatter is intentionally NOT fixed as part of this ticket (see plan.md Decision 4) — / Keeps the hand-written Objective-C initializer working after the implementation moved to Swift. `auth_mode` defaults to 'gatekeeper' (ELECTRIC_PRD.md Phase 7), which rejects a client-supplied Header and hero responsive overrides (moved from responsive.css). Search console responsive overrides (moved from responsive.css). Search results responsive overrides (moved from responsive.css). * outcome today — leads land unassigned until Keith's account exists (Task 4 errand). that moved to a source-dependent column would satisfy `isHideable` while not being drawn The row moved to the Columns tab (ah-20di); it is unchanged apart from where it lives. * where the two reset buttons moved to: everything about the table's columns in one place. * default rather than needing every person's row updated to include it. A reader of this control * Task 7's wizard step needs the identical checkbox list before a person has a Settings page to * MetricCard now reads useDataTypes() itself (Task 8), the way ControlRow already reads the
Method and caveats
One commit per repo, sampled via GitHub commit search across each day of the window. AI: commits whose message contains "Co-Authored-By: Claude", Sep 2026. Baseline: commits from Mar 2021 with no AI co-author. Only added lines in recognised source files; vendored, generated, lock and minified files and files with >1500 additions excluded. Comment detection and narration rules: lib/scan.js. Commit search returns what GitHub's index surfaces, not a uniform random sample. "Co-Authored-By: Claude" marks commits where Claude Code wrote at least part of the change; many AI-written commits carry no trailer. The narration detector is a regex list tuned for precision (lib/scan.js); in a hand check of 40 flagged lines from the Claude sample, about half were clear narration (ticket and task numbers, "previously…", "moved to…", "the user asked for it gone") and most of the rest referenced project phases ("Phase 1 of the 3D port"), which you may or may not count. Excluding every comment that mentions a phase, the result still holds: 11.5% of Claude-co-authored commits vs 0.5% of 2021 commits. The raw per-commit data (repo, sha, counts and comment texts) is in study/, so you can re-run node study/analyze.js.
Stop it at the source
No Comment is a free hook for Claude Code and Codex. It sends exactly these comments back to the agent right after it writes them. Install it, check one of your PRs, or measure your own sessions with npx github:swarm-t3/nocomment stats.