· 7 min read
The Commit-Message Agent Has Finally Found the Senior Engineer’s Core Competency
By T. Ivanov
- tools
- satire
SATIRE — At Bracket Aquarium, a software company whose office plants are named after deprecated frameworks, local developer Dorian Vale has spent ten years writing commit messages such as “fix,” “fix actual,” and, during a difficult Tuesday in 2022, “please.” This week he installed a local AI agent to draft them. Within 14 seconds, it produced: “Prevent duplicate invoice retries when the payment webhook is replayed after a timeout.” Vale stared at the terminal long enough for his screen lock to activate, then reopened it to make sure the sentence had not been sent by a relative.
The agent, Commit Steward 9000, examines the staged diff and proposes a subject line plus a body. It does not own a hoodie, interrupt planning meetings, or say “just a quick thought” before adding a distributed-systems migration to the sprint. Its only stated requirement is access to the diff, the tests, and the last 40 commits—an arrangement Vale calls “more context than I have ever brought to a commit in my life.”
The workflow is cruelly practical
Vale’s routine is now to stage deliberately, ask the agent to explain the staged change, and compare its proposed message with the thing he was about to type. The comparison is not emotionally symmetrical. Git supports a message supplied with -m, and git commit -v can place the relevant staged diff beneath the editable message area, where it is visible but not included in the commit. This means developers have had a built-in mechanism for observing what they changed before naming it, which is unfortunate news for everyone who believed the missing ingredient was more tab completion.
git add src/billing/retry.ts test/billing/retry.test.ts
git diff --cached
git commit -vCommit Steward 9000 is particularly good at turning a two-file diff into a sentence that names the behavioral change, the affected system, and the condition that triggered it. Vale reports that his git history now contains phrases like “Reject expired password-reset tokens before session creation,” rather than “auth changes.” A later archaeologist can now learn what happened without reconstructing a crime scene from 11 altered lines and an anxious Slack thread.
The organization has responded with maturity. The Platform Enablement Council for Expressive Metadata has scheduled a 90-minute session titled “Who Owns the Verb?” A draft policy proposes that every commit subject begin with an approved action word from the Enterprise Motion Lexicon: “Harmonize,” “operationalize,” “de-risk,” or “fix.” The last option requires vice-president approval.
It is not, unfortunately, a tiny technical writer who knows your system
The agent is bad at the most important distinction: whether a change is intentional. Feed it a diff that removes a validation branch because a developer accidentally deleted it, and it may confidently describe the deletion as a simplification. Feed it a formatting sweep plus a one-line semantic bug fix, and it may compose a tasteful novella about whitespace while omitting the production incident. Give it a staged lockfile update and it will occasionally narrate the dependency graph with the solemnity of a coronation.
This is why the useful command is not “write commit messages forever.” It is closer to: “describe this diff, then make me notice if your description differs from my intent.” Vale keeps the agent’s draft in the editor, reads it, and changes it when the wording smuggles in an assumption. He has learned that an agent can infer what lines do; it cannot reliably know why the business accepted the risk, why a flag remains, or why the ugly branch stays until the regional migration ends.
For teams that want the old-fashioned version of this safeguard, Git supports a commit-message template via commit.template. A template can require a short subject, an explanation of behavior, and a note about tests or rollback. It is less charismatic than an agent and cannot consume an entire afternoon proposing alternatives to the word “handle.” It also has no inference bill and has never told a developer that a deleted guard clause was “a clean architectural improvement.”
cat > ~/.gitmessage <<'EOF'
# What changes for a user or caller?
# Why is this needed now?
# Tests run / risk / rollback note:
EOF
git config --global commit.template ~/.gitmessageThe hidden cost is that the history becomes readable
There are consequences. Vale’s pull requests are now harder to wave through because reviewers can see the claimed behavior immediately. Incident responders have begun locating the commit that introduced a condition without summoning the original author from a beach. One engineer even amended “misc cleanup” into “Stop caching tenant permissions across organization switches,” and then had to explain why that was not, in fact, miscellaneous.
Bracket Aquarium’s leadership has launched an internal initiative to contain the outbreak of specificity. Its banner reads: “Preserving Optionality in Historical Narratives.” The initiative’s first deliverable is a dashboard showing commit-message sentiment. Its second is a pilot that asks a second agent whether the first agent’s tense aligns with the company’s values. Early results are being withheld until they can be made less legible.
The joke has a limit. A generated commit message is not evidence that a change is correct, and a polished sentence is not a substitute for a reviewable diff, tests, or a human who understands the requirement. But the plain observation standing after the satire is this: commit messages are one of the cheapest places to leave future developers the reason for a change. If an agent makes a developer pause long enough to write that reason down accurately, it has done something useful.