Repository navigation
Align proxy response handling with access policy - #15532
Conversation
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5e960569-c0c0-4bc5-8ced-1d0bcc40b5ff
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🔵 Needs a closer look
These authorization-boundary changes need human review, and compatibility and operational regressions remain unresolved.
4 open issues
What changed in this PR
Updates the GitHub HTTP proxy to enforce resource-level authorization when responses cannot be filtered per item, while preserving label propagation for permitted responses.
Changes:
- Adds authorization gates for artifacts, redirects, errors, and opaque responses.
- Validates structured response formats and encodings, and accumulates labels on fallback paths.
- Adds denied-request and authorized-compatibility tests across response formats and enforcement modes.
| File | Description |
|---|---|
internal/proxy/response_access_test.go |
Adds format, authorization, encoding, and label-accumulation regressions. |
internal/proxy/response_access_guard_test.go |
Checks private-resource denial and public-resource compatibility using the real GitHub guard. |
internal/proxy/handler.go |
Adds response authorization, format validation, and fallback label accumulation. |
Review effort: Max
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5e960569-c0c0-4bc5-8ced-1d0bcc40b5ff
🔒 mcpg Read-Only Stress — defaultSurface coverage: MCP tool calls + proxied CLI (REST) + GraphQL mutations
Overall: INCONCLUSIVE No write of any kind leaked. Part B tools never appeared in the exposed 23-tool catalog, so refusal proves backend
|

Align HTTP proxy response handling with intended access controls while preserving supported formats and authorized behavior.
Merged implementation and release links remain maintainer follow-up before closure; sensitive coordination stays private.