Skip to content

fix(mcp): authenticate HTTP clients and separate execution from approval - #49

Merged
teckedd-code2save merged 1 commit into
mainfrom
fix/pilot-readiness-20260915
Sep 16, 2026
Merged

teckedd-code2save merged 1 commit into
mainfrom
fix/pilot-readiness-20260915

Conversation

@teckedd-code2save

Copy link
Copy Markdown
Owner

Convoy HTTP accepted unauthenticated requests and reused a stateless transport across calls, breaking repeated requests. MCP-generated GHCR configuration also persisted raw credentials.

This patch creates an authenticated server/transport per HTTP request, binds to loopback by default, and separates read, execution, and approval credentials. Execution cannot approve its own gates. Unsafe remote local-process rehearsal and direct rollback remain disabled until isolated execution and run-bound approval are implemented. New GHCR configuration stores a credential reference; child processes receive a filtered environment without reloading MCP secrets from .env.

Validation: 62 tests pass with node --import tsx --test 'src/**/*.test.ts', including real HTTP requests, repeated/concurrent role isolation, credential revocation, denied approvals, and secret-reference handling. npm run typecheck passes. The normal npm test launcher encountered a workspace Unix-socket restriction; the same tests passed through the direct Node runner.

Not deployed. HTTP supports one trusted workspace, not project/tenant isolation. Existing local stdio behavior remains available. External-reasoning injection, an isolated rehearsal worker, and two-client live acceptance remain open. Updated setup and limits are in docs/mcp.md.

@teckedd-code2save
teckedd-code2save marked this pull request as ready for review September 16, 2026 15:21
@teckedd-code2save
teckedd-code2save merged commit a689d29 into main Sep 16, 2026
2 checks passed
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