Source: pre-v1.0 security review (secrets-bridge/skills/SECURITY_REVIEW.md §2 P0-3). Companion to secrets-bridge/agent#12.
Why this is P0: agent's agent_secret is a single factor today. P0-3 introduces workload identity (mTLS / SPIFFE / IRSA) as a second factor. This CP-side issue adds the validation + rotation surface.
Required scope
Pre-requisite
#26 (auth middleware refactor) should land first so the agent-auth path uses the same identity-from-context pattern.
Effort estimate
~1 week on top of the agent-side work.
Gating
This issue MUST be closed before any v1.0 announcement.
Source: pre-v1.0 security review (
secrets-bridge/skills/SECURITY_REVIEW.md§2 P0-3). Companion tosecrets-bridge/agent#12.Why this is P0: agent's
agent_secretis a single factor today. P0-3 introduces workload identity (mTLS / SPIFFE / IRSA) as a second factor. This CP-side issue adds the validation + rotation surface.Required scope
AgentAuthmiddleware: when configured, validate the client cert against a configured CA bundle, extract identity from the cert's SAN (matching the SPIFFE ID or DNS SAN), bind it to theagent_idclaimed by the request. Reject mismatch.POST /agents/:id/rotate-secret— agent presents the old secret + the new one is minted. The new secret returned ONCE. Old secret invalidated atomically. Audit event with correlation ID.POST /agents/:id/revoke-secret— admin-only, immediate invalidation.SB_AGENT_MTLS_REQUIRED=true|falsetoggle. When true, agents without mTLS get 401.SB_AGENT_MTLS_CA_FILEfor the operator's CA.api/SKILL.md+ the operator runbook companion to the agent's P0-3.Pre-requisite
#26 (auth middleware refactor) should land first so the agent-auth path uses the same identity-from-context pattern.
Effort estimate
~1 week on top of the agent-side work.
Gating
This issue MUST be closed before any v1.0 announcement.