Skip to main content

Client matrix

Each row is one MCP client and what was run of it against a PolicyArc environment. A client is verified only when someone connected it, signed in and made a tool call that shows under Access Activity. Signed in, no tool call means it connected and signed in, but no tool call from that client was run. No client is verified yet. Claude Code and OpenCode connected and signed in, and nobody has run a tool call from either. A client with no run shows no version or date. The rows come from src/data/clients.json. A test in npm run verify fails when a row claims a run without a version and a date.

ClientStatusVersion testedDate testedTransportAuth flowWhat was run
Claude CodeSigned in, no tool call2.1.2962026-10-12HTTPPKCE with a client ID metadata document. No registration call.Add, sign in, connect. No tool call.
OpenCodeSigned in, no tool call1.14.282026-10-12HTTPPKCE after dynamic client registration.Add, sign in, connect. No tool call.
Claude DesktopNot verifiedNot runNot runstdio to the mcp-remote bridge, then HTTPDone by mcp-remote. Version 0.14.3 used PKCE after dynamic client registration.App not run. The mcp-remote 0.14.3 bridge ran on 2026-10-12 and made one tool call.
CursorNot verifiedNot runNot runHTTP in the snippetNot run.Not run.
VS CodeNot verifiedNot runNot runHTTP in the snippetNot run.Not run.

Windsurf is not listed. Nobody has run it against the gateway.

Each client that ran followed the same exchange. The gateway answered the first request with 401 and a WWW-Authenticate header that points at its protected resource metadata. The client found the authorization server there, sent the user to sign in with PKCE, and then called the gateway with the bearer token it received.