Files
platform/todo/agent-coordination/commit-signing-is-inconsistent-across-harnesses.md
T

2.3 KiB

id, title, theme, status, created, date_source, order
id title theme status created date_source order
agent-coordination/commit-signing-is-inconsistent-across-harnesses Commit signing is inconsistent across harnesses — Claude names itself, opencode names nothing agent-coordination open 2026-08-25 stated 3

Every commit an agent makes should be signed with its harness name AND its chat/session id. Raised 2026-08-25, and the owner's own audit of what actually happens today splits the work in two, because the two harnesses are missing different halves:

  • Claude Code already does the harness-name half — every commit in this repo's history carries Co-Authored-By: Claude <model> <noreply@anthropic.com>. The id half is known and already blocked, not missed: agent-coordination/an-agent-cannot-learn-its-own-session-id explains why (no reliable way for a session to learn its own transcript id) and CLAUDE.md's own "An agent's commit names the session that made it" section names the same precondition. Nothing new to file for Claude — this item exists for the other half.

  • opencode signs nothing at all. Not the harness name, not an id — checked 2026-08-25, no Co-Authored-By convention and no session-identifying trailer anywhere in src/servers/sidecar/opencode/. This is a DIFFERENT gap from Claude's: naming the harness has no precondition and no blocker. It could be added today, independent of the transcript-id mechanism — opencode simply has no instruction telling it to identify itself in a commit at all.

So there are two pieces of work, not one, and they are not coupled:

  1. opencode: add the harness-name half now. Whatever hands opencode its system prompt / commit conventions (the equivalent of CLAUDE.md for that harness — search src/servers/sidecar/opencode/ for where its instructions are assembled) needs the same Co-Authored-By: opencode <...> line Claude already writes. No dependency on anything unbuilt.
  2. Both harnesses: add the id half once the precondition lands. This is exactly agent-coordination/an-agent-cannot-learn-its-own-session-id — give every session its own chat id at turn time (the mechanism commanderBlock already proves for commanders), then both harnesses' commit trailers gain an Officer-Session:-style line. Do this once, generalized, rather than solving it twice per harness.