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.

13.8%of Claude-co-authored commits add a comment that narrates the chat or the edit ("previously…", "changed from…", "phase 3", "per the plan"). 2021 baseline: 0.5%.
8.5%median share of added lines that are comments in a Claude-co-authored commit. 2021 baseline: 4.9%.
MetricClaude co-authored, 2026Baseline, 2021
Commits sampled (one per repo)400400
Lines added in source files404,632223,216
Median comment share per commit8.5%4.9%
Commits where over 25% of added lines are comments13.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 edit55 (13.8%)2 (0.5%)
Narrating comments per 1,000 added lines0.40.01

What we found

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.