Repository navigation
TOOLS-137: Allow explicit private HTTP MCP upstreams - #167
Merged
averycrespi merged 2 commits intoOct 13, 2026
Merged
Conversation
averycrespi
marked this pull request as ready for review
October 13, 2026 00:56
averycrespi
added this pull request to stack #170
October 13, 2026 19:06
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.
Context
Stacked on #166 (
avery/tools-136-remote-oauth), notmain. Incremental base:f2ca07dc9129e26671810b572223641d62ad8345.TOOLS-137 enables unauthenticated MCP services such as
http://notes-mcp:8080/mcpon operator-controlled private networks without a global security bypass.Changes
allow_private_httpconfiguration across API, CLI JSON input, and browser create/edit forms. Existing definitions default to denial.Review Notes
This is outbound MCP policy only, not inbound
--allowed-hostor HTTP/Git grant expansion. Plaintext is unauthenticated and unencrypted; custom headers remain nonsecret configuration.Docker packaging and separate-container service-name execution belong to TOOLS-138/139. No local Docker, live Debian, installed-resource or provider qualification is claimed. Independent incremental review precedes publication; promotion requires exact-head target-applicable CI.
Two unrelated real-browser credential scenarios initially failed transient assertions, then passed focused diagnosis and the complete unchanged-source Chromium aggregate. No causal fix is claimed. An initial integration run used umask077, which masked deliberately unsafe path fixture modes; those owners passed with umask022 and the remaining exact integration inventory passed. Original failures are retained in delivery evidence.
The initial CI E2E run exposed a held-invocation snapshot timing failure. A test-only repair uses the existing catalog-poll quiet-window harness without changing assertions or production behavior. Focused race tests, all quiet-window boundaries,
make verify, the complete E2E owner, and independent repair review passed. Catalog-poll causation fits the observed timing and withdrawal path but was not directly traced; the original failure remains retained. Full incremental and focused repair reviews found no material issues.Test Plan
make -C agent-gateway verifyand local pre-commit hooksgo test -race -count=1 -timeout=5mregressionsnpm run format:check,ui:typecheck,ui:build,ui:verify-generated,ui:verify-supply-chain,ui:test-dev(187 tests)npm run ui:test-browser(31 owners);make -C agent-gateway test-browser(workflow, privacy, visual, accessibility)go -C agent-gateway tool govulncheck ./...,npm run ui:audit, outgoing history/metadata secret scanb214c6c090dfad2f5d3632a86402da7136f763db: CI runTestProxyIPv6SocketFallbackpositive PASS on exact-head Ubuntu integration-2 (job log); local unavailable-loopback skip remains disclosed