feat: operator identity passthrough for SSE mode - #11
Open
DanielPBak wants to merge 1 commit into
Open
Conversation
DanielPBak
force-pushed
the
dbak/operator-identity-passthrough
branch
from
July 1, 2026 20:22
5ab0755 to
328325f
Compare
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
force-pushed
the
dbak/operator-identity-passthrough
branch
from
July 1, 2026 21:07
328325f to
78dab58
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Operator identity passthrough for the Jarvis MCP server (ENG-9818).
In SSE mode, capture the
X-Operator-Identityheader 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'sInternalRequestContextInterceptorrecords it asactingFor, so Jarvis calls become attributable to the human operator in the audit log.Gated behind a new
--forward-operator-identityflag, 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 newTestOperatorIdentityForwardedToBackend: an httptest backend asserts the header is forwarded when the SSE context carries the operator identity, and absent otherwise.Notes
actingForbranch, 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.