Skip to content

TOOLS-136: Support remote HTTPS OAuth callbacks - #166

Merged
averycrespi merged 1 commit into
avery/tools-135-remote-servingfrom
avery/tools-136-remote-oauth
Oct 13, 2026
Merged

averycrespi merged 1 commit into
avery/tools-135-remote-servingfrom
avery/tools-136-remote-oauth

Conversation

@averycrespi

Copy link
Copy Markdown
Owner

Context

Implements TOOLS-136: complete upstream OAuth from a remote browser behind an HTTPS reverse proxy without an SSH tunnel.

Stacked on #165, targeting avery/tools-135-remote-serving rather than main. Incremental base: a2c70776b2c85838ffea3bb28460a6b77be48f6f.

Changes

  • Default OAuth redirect to the configured external HTTPS origin plus /oauth/callback, reusing the main listener and preserving exact redirect bytes throughout registration, authorization and exchange.
  • Require remote callback overrides to match that exact URI; retain local loopback callback listeners without external origin. Reject malformed callback paths/bodies and preserve Host/forwarding/state/PKCE/issuer/fencing/no-replay controls.
  • Advertise web clients for HTTPS dynamic registration; update UI/API validation and operator documentation without claiming universal provider acceptance.
  • Add deterministic HTTPS provider/reverse-proxy coverage, callback negatives, cancel/restart and installed-credential MCP use.

Review Notes

Review the incremental diff from #165; tests exercise the cumulative tree. Private HTTPS MCP upstream policy is intentionally unchanged (TOOLS-137). The fixture proves usable installed encrypted OAuth credentials with the existing test-only resolver/dial seam after stopped generation read; it does not claim running-Gateway private-upstream support.

No real provider credentials, live installation, Docker build/runtime, deployment or registry publication are involved. Provider-specific registration acceptance remains separate qualification.

Test Plan

Passed locally:

  • Race/count-one tests: contract, OAuth, servers, API, HTTP boundary, CLI root and composition
  • Real-binary E2E: remote HTTPS OAuth, preserved loopback OAuth, remote serving/local CLI
  • make -C agent-gateway verify, test-security and test-harness (including documentation/link checks)
  • Frontend typecheck, deterministic generated assets, supply-chain guard and 187 Node tests
  • Full mocked Chromium suite (31 scenarios), real-Gateway Chromium accessibility, and actual desktop/mobile/320px callback-state screenshot inspection
  • npm run format:check

Exact-head target-applicable CI is required before draft promotion.

@averycrespi
averycrespi marked this pull request as ready for review October 12, 2026 23:23
@averycrespi
averycrespi added this pull request to stack #170 October 13, 2026 19:06
@averycrespi
averycrespi merged commit 1dbd91f into main Oct 13, 2026
29 of 32 checks passed
@averycrespi
averycrespi deleted the avery/tools-136-remote-oauth branch October 13, 2026 19:06
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