Skip to content

feat: operator identity passthrough for SSE mode - #11

Open
DanielPBak wants to merge 1 commit into
masterfrom
dbak/operator-identity-passthrough
Open

feat: operator identity passthrough for SSE mode#11
DanielPBak wants to merge 1 commit into
masterfrom
dbak/operator-identity-passthrough

Conversation

@DanielPBak

@DanielPBak DanielPBak commented Jul 1, 2026

Copy link
Copy Markdown

What

Operator identity passthrough for the Jarvis MCP server (ENG-9818).

In SSE mode, capture the X-Operator-Identity header from each inbound SSE message request (minted by a trusted edge proxy after verifying the operator's basic-sso mTLS cert) and attach it as gRPC metadata on the outbound backend call. The backend's InternalRequestContextInterceptor records it as actingFor, so Jarvis calls become attributable to the human operator in the audit log.

Gated behind a new --forward-operator-identity flag, default off — existing deployments are byte-for-byte unchanged until they opt in via args. Stdio mode is unaffected (no HTTP request to read a header from). The header is only ever taken from the incoming request as forwarded by the edge proxy; grpcmcp itself does no verification — trust comes from the edge minting/stripping the header.

Testing

  • go test ./... — all pass, including new TestOperatorIdentityForwardedToBackend: an httptest backend asserts the header is forwarded when the SSE context carries the operator identity, and absent otherwise.

Notes

  • Companion changes (backend interceptor actingFor branch, nginx edge mTLS verification, local shim cert presentation) live in the basic repo; ALB TLS passthrough for the mcp target is a pending infra prerequisite.

@DanielPBak
DanielPBak force-pushed the dbak/operator-identity-passthrough branch from 5ab0755 to 328325f Compare July 1, 2026 20:22
In SSE mode, capture the X-Operator-Identity header (minted by a trusted
edge proxy after verifying the operator's client cert) from each inbound
message request and attach it as metadata on the outbound gRPC call, so
the backend can attribute agent calls to the human operator.
@DanielPBak
DanielPBak force-pushed the dbak/operator-identity-passthrough branch from 328325f to 78dab58 Compare July 1, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant