Skip to content

Connect your harness

If it talks to a model, you can govern it with TapPass. Leave the app exactly as it is and change one thing: where it sends inference. From that moment every prompt, completion, tool call, and file it touches flows through your policy, your audit trail, and your approvals.

No SDK rewrite. No forked client. You redirect a base URL, or add TapPass as a tool server, and the app never knows the difference, except that it is now governed.

Just want the values to paste in? Jump to the three ingredients: your base URL, a TapPass key, and the model IDs.

Most tools connect on one of two planes. Some support both. In each case TapPass is a single front door, so one connection reaches everything behind it.

One front door. On the model plane, the agent connects to one TapPass endpoint whose native router reaches every model. On the tool plane, the agent connects to one TapPass virtual MCP that fronts every MCP server.

  • Model plane: one endpoint, every model. TapPass has a native model router. The tool points at one base URL with one key, and TapPass routes each call to the right provider (OpenAI, Anthropic, Azure, Bedrock, Gemini, or a model you host). You add or switch models in TapPass, not in every app, and every call is governed.
  • Tool plane: one endpoint, every MCP. TapPass is a virtual MCP. The agent connects to one TapPass MCP endpoint that fronts all of your MCP servers, so every tool call across every server runs through the same policy and audit trail.
Plane What you change in the tool What TapPass governs Endpoint
Model plane the model base URL + API key the inference (prompts, completions, streaming) /v1/messages or /v1/chat/completions
Tool plane add TapPass as an MCP server what the agent does (tools, data, actions) the TapPass MCP endpoint

Two questions decide coverage for any harness: can TapPass govern the model call, and can it govern the tool calls. Here is where each one stands.

HarnessModel callsTool callsNotes
Desktop & chat apps
Claude DesktopYesYesGateway mode governs Chat, Cowork, and Code; MCP tool servers governed
Open WebUIYesYesOpenAI-compatible base URL; tools via MCP
LibreChatYesYesCustom endpoint; MCP servers governed
Coding agents & IDEs
Claude CodeYesYesANTHROPIC_BASE_URL; MCP tools governed
CursorYesYesChat and edit governed; Tab and indexing bypass to Cursor. MCP tools governed
ClineYesYesAnthropic or OpenAI mode; MCP tools governed
GitHub CopilotYesYesBYOK endpoint; MCP tools governed
Microsoft Copilot
Microsoft 365 CopilotNoYesBuilt-in chat model is locked; govern actions via MCP / connectors
Copilot StudioPartialYesModel via Azure AI Foundry BYOM (TapPass-direct is a workaround); tools via MCP / connectors
Custom engine agentsYesYesYou own the orchestrator endpoint; MCP tools governed
Low-code & workflow
n8nYesPartialLLM via base URL (avoid Agent Builder); tool calls governed when routed through TapPass / MCP, native n8n nodes run in n8n
FlowiseYesPartialLLM via OpenAI-compatible node; tools via MCP / TapPass tools, native nodes run in Flowise
LangflowYesPartialLLM via model base URL; tools via MCP / TapPass tools, native components run in Langflow
DifyYesPartialLLM via custom model provider; tools via MCP / TapPass tools, native tools run in Dify
MakeYesn/aModel call governed via HTTP; Make executes its own modules, so tool execution is out of band
ZapierYesn/aModel call governed via webhook; Zapier executes its own actions, so tool execution is out of band

Yes supported Partial partial or workaround No not possible n/a the tool runs the action itself

“Govern the tool calls” means TapPass evaluates and can block the tool execution, which happens when the tool call is routed through TapPass’s MCP server. Even where that column is n/a, the model’s request to call a tool is still visible in the governed model response.

Be clear-eyed about this: governance is intention based. TapPass governs what you connect to it. A tool that never routes through TapPass is not governed by TapPass. For most teams that is exactly the point: you choose the governed path and route everything through it.

When you need to guarantee that the governed path is the only path, for example to stop an agent reaching a model or a supplier you did not approve, add a confinement layer beneath TapPass:

  • Client-side enforcement. Lock the tool’s configuration so it can only reach TapPass. The cleanest example is a managed Claude Desktop rolled out through MDM with read-only settings, so a user cannot point it anywhere else.
  • Secure sandboxes. Run the agent inside a sandbox that constrains what it can reach at all. TapPass sits on top of such a sandbox and will sync to NVIDIA OpenShell sandboxes (coming soon). The sandbox makes the TapPass request path the only path; TapPass decides whether each permitted action is right, before it runs, and keeps the record.

So the honest answer to “can you govern everything” is: yes for everything you route through TapPass, and for the rest you pair TapPass with confinement so the governed path is the only one. See Sandboxes and enforcement for how this works end to end, including Claude Code and NVIDIA OpenShell.

Every model-plane connection needs the same three values. Get them once, reuse everywhere.

  • TapPass Cloud: https://app.tappass.ai
  • Self-hosted: your TapPass host (local development: http://localhost:9620)
Endpoint Purpose
POST /v1/messages Anthropic Messages API (streaming + tool use)
POST /v1/chat/completions OpenAI Chat Completions
GET /v1/models Model discovery (your org’s enabled catalog)
GET /.well-known/jwks.json Offline token verification

Use https://app.tappass.ai for Anthropic-style clients and https://app.tappass.ai/v1 for OpenAI-style clients.

The credential you paste in is how TapPass knows which agent is calling and under which org and policy. One credential maps to one agent identity.

In the app:

  1. Open Agents and create an agent (or open an existing one).
  2. On its Connect step, copy the base URL and the API key.

Paste that key into your tool and send it as Authorization: Bearer <key> (TapPass also accepts X-Api-Key). Rolling out to a team? Give each person their own key so each is a distinct identity, and hand them out automatically through MDM.

Prefer the terminal? The same from the CLI: tappass auth developer-key create for an agent key, or tappass auth pat create <name> for a personal access token. See the CLI reference for the full command surface.

TapPass model IDs are provider-prefixed, for example anthropic/claude-sonnet-4-5-20250929 or openai/gpt-4o. In the app, open Models to see the IDs your org has enabled. (CLI: tappass model list. API: GET /v1/models.)

Pick your tool for its specific steps.

After connecting any tool, send one message through it, then open the TapPass console and confirm a governed event appears for the agent you used. Event shows up: you are on the governed path. Model answers but no event: the tool is still talking to the provider directly, so re-check the base URL and key.