Files
DuncanandWill Pfleger 0ebb2a753b feat(acp): enforce deterministic agent git commit identity
Agent sessions could commit under the human operator's ambient git
identity: only buzz-dev-mcp's shim applied the nostr author/signing
GIT_CONFIG_* env, and only to its own shell-tool children. The native
shells of claude-code, codex, and goose never saw it, so a bare
`git commit` there resolved to whatever the repo/global config carried
— erasing the AI-attribution signal (e.g. block/buzz #3140).

Make the identity machine-managed across every harness:

- New `buzz-git-identity` crate holds the pure author/email/signing/
  keyfile logic as the single source of truth, consumed by both the
  shim and the harness so an agent commits under a byte-identical
  identity regardless of which surface applied it.
- A `git` enforcement wrapper (installed on PATH ahead of the real
  binary) scrubs GIT_AUTHOR_*/GIT_COMMITTER_* from the child env,
  rejects `-c user.*`, `--config-env=user.*`, `--author`, and
  `--reset-author`, and on push refuses any outgoing commit not
  authored by the agent identity, then execs real git.
- The harness lifts the identity + NIP-GS signing config onto the
  agent-runtime child and installs the wrapper plus the nostr
  signer/credential helpers via buzz-acp's own multicall, so native
  shells of all runtimes inherit both. Composed over the desktop's
  per-URL credential helper; skipped when no nostr key is present.
- Prompt guidance (base_prompt.md, nest_agents.md) updated: identity
  is machine-managed; credit the operator via Co-authored-by/
  Signed-off-by trailers, never user.name/email/-c/--author.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-08-17 18:49:18 -04:00
..