Skip to content

Commit messages

A commit message lets a collaborator reading the history tell who directed and is responsible for a change, and which model, if any, executed it.

Part What it says
Author The native Git author is always the human.
Body For substantive work: the human direction and ideas, what the agent chose and did, what was checked and reviewed, and any consequential decision still open, citing the trace record and turn IDs. A subject plus an execution marker is not enough. Before each commit, the agent’s record routine drafts the body from the trace record, with what is new since the record’s last commit.
Record: line Names the trace record the commit belongs to, so the queue, the brief, accept --record and the governing-actions report can join the commit to its record. The record routine writes it with the body.
No record kept When the agent finds no transcript of its session, it commits with a body that says no record was kept and why.
Fixes <ID> Names the ledger row the commit fixes (or Fix, Fixed, Closes, Corrects or Resolves before the id), so the governing-actions report joins the correction to that row’s recheck. An id only mentioned is not joined.
Execution-agent: <model-id> The execution marker: the last line of a commit a model executed, naming the actual model ID. The agent reads that ID off its own runtime, Claude Code or Codex. When it finds none, it uses the ID it was told it runs as, the ID alone, and tells you it is self-reported. The marker marks production, not authorship, and does not say who proposed or selected the work.
A person’s own commit Carries no execution marker and needs no flag. Its absence reads as a commit a person typed, never as a problem.
Co-Authored-By: or Made-by: for a model Never. Authorship carries accountability, a model cannot hold it, and ICMJE, COPE, Nature and Science all say an AI cannot be an author.
Add the yearly non-publication shares
<what was asked, what the agent chose, what was checked>
Record: ai/records/<id>
Execution-agent: <model-id>

If a sandbox refuses the commit, the agent says so, leaves the change staged, and shows you the commit message it would have used, trailers included.

There is no commit hook. trace_record.py verify-range reads the messages in a range, prints any AI co-authorship claim or drifted trailer, and blocks nothing.

This page describes TRACE-OS 0.1.0-rc23, a release candidate prepared on 2026-10-15.