You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Surfaced by automated review on #875 (the finding anchors on new code, but the behavior is the long-standing shared bridge path used by both /mcp and /mcp/{server}).
Today RmcpBridge::connect accepts http:// upstream URLs for credentialed MCP servers, and the underlying HTTP client follows redirects. reqwest strips Authorization on cross-origin redirects, but custom credential headers (e.g. an api_key auth header) are not in its sensitive-header set, so a compromised/misconfigured upstream could bounce a credentialed request to another origin with the credential attached.
Worth deciding deliberately:
whether credentialed type: mcp upstreams should require https (probably as a warning first — plain http to cluster-internal MCP servers is a common lawful deployment, and hard-rejecting would break them),
whether the MCP client should disable redirect-following (MCP endpoints don't legitimately redirect mid-protocol),
marking custom credential headers sensitive if redirects stay enabled.
Not done in #875 because it would change established transport behavior for every existing registered server, well beyond that PR's routing scope.
#808 - fix(upstream): name the real transport fault and bound the connection layer [merged] #822 - feat(mcp): layered MCP access policies — env default, team entitlement, key narrowing [merged] #835 - feat(headers): request-context variables in default_headers + client-header forwarding allowlist [merged] #859 - feat(mcp): OAuth 2.1 resource-server discovery surface for /mcp [open] #875 - feat(mcp): single-server endpoint /mcp/{server} with original tool names [open]
📝 Issue Planner
Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.
Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your .coderabbit.yaml:
issue_enrichment:
auto_enrich:
enabled: false
💬 Have feedback or questions? Drop into our discord!
Activity
coderabbitai commentedon Aug 4, 2026
🔗 Related PRs
#808 - fix(upstream): name the real transport fault and bound the connection layer [merged]
#822 - feat(mcp): layered MCP access policies — env default, team entitlement, key narrowing [merged]
#835 - feat(headers): request-context variables in default_headers + client-header forwarding allowlist [merged]
#859 - feat(mcp): OAuth 2.1 resource-server discovery surface for /mcp [open]
#875 - feat(mcp): single-server endpoint /mcp/{server} with original tool names [open]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!