Allow agent files to set git user identity (name/email) #94
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
git.user.name/git.user.emailis a bottle-only field today (manifest.py_AGENT_KEYSrejects anything else in agent frontmatter). The only way to give an agent a distinct commit identity is to author a whole separate bottle — coupling commit attribution (a purpose/presentation concern) to the security boundary (the bottle). This is why e.g. aclaude-dev-implementerbottle exists largely to carry oneuser.name.Proposal
Let agent files declare
git.user(name/email only). At launch the agent'sgit.useroverlays the referenced bottle'sgit.userper-field (agent wins on non-empty), mirroring the existingextends:overlay from PRD 0025.git.remotesbottle-only — that block carries credentials (IdentityFile, KnownHostKey) and is boundary-relevant.Manifest.bottle_for(), the single chokepoint both backends already use, so provisioners need no changes.Why this is safe
Git author identity is not a credential or capability: push auth is the bottle's
git.remotestoken/key, and the author field is already forgeable from inside the bottle (git config user.email ...at runtime). The manifest field is only a default. Allowing agents to set it does not widen the attack surface; attribution integrity is a commit-signing concern, not an author-field one.Follow-up: PRD + implementation.