Quickstart
Connect an MCP client with a named identity and per-tool grants.
Use the tested bearer setup paths for Codex CLI, Claude Code, and OpenCode, then grant only the tools the task needs. OAuth metadata and current validation limits are documented below.
What This Sets Up
This page is the actionable path for Codex CLI, Claude Code, or OpenCode. It sets up a named Agent identity, one MCP endpoint, and individual tool grants. The client gets the MCP transport; ExecWarden decides which tools it can see and which actions pause for review.
For the transport and OAuth reference, see MCP & API. This page focuses on the client setup path.
Connect the Client
Create or choose a named Agent identity first. Then grant only the capabilities that identity needs. For risky writes, leave the relevant actions in Ask mode so the exact payload pauses before execution.
Per-tool scope examples
OAuth authorization example
If you choose OAuth instead of the bearer fallback, the identity view lists the authorized client separately from the tool grants it can use. Authorization alone does not prove that the client has completed a tool call.

Codex CLI
The real-client smoke for Codex CLI 0.145.0 validated MCP registration, bearer-token environment setup, config/list output, and OAuth registration and login command flags. It did not run a model session.
export EXECWARDEN_MCP_URL="https://YOUR_GATEWAY_HOST/v1/mcp"
export EXECWARDEN_MCP_TOKEN="YOUR_AGENT_IDENTITY_TOKEN"
codex mcp add execwarden-bearer \
--url "$EXECWARDEN_MCP_URL" \
--bearer-token-env-var EXECWARDEN_MCP_TOKEN
codex mcp list --jsonClaude Code
The real-client smoke for Claude Code 2.1.217 validated MCP registration, bearer-header connectivity, OAuth client-id setup, and the connected-server list output. It did not run a model session.
export EXECWARDEN_MCP_URL="https://YOUR_GATEWAY_HOST/v1/mcp"
export EXECWARDEN_MCP_TOKEN="YOUR_AGENT_IDENTITY_TOKEN"
claude mcp add --transport http --scope user execwarden-bearer \
"$EXECWARDEN_MCP_URL" \
--header "Authorization: Bearer $EXECWARDEN_MCP_TOKEN"
claude mcp add --transport http --scope user execwarden-oauth \
"$EXECWARDEN_MCP_URL" \
--client-id claude-code
claude mcp listOpenCode
The real-client smoke for OpenCode 1.18.4 validated a remote MCP config, bearer authentication, server-list output, and the command surface for MCP setup. It did not run a model session.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"execwarden-bearer": {
"type": "remote",
"url": "https://YOUR_GATEWAY_HOST/v1/mcp",
"enabled": true,
"oauth": false,
"headers": {
"Authorization": "Bearer YOUR_AGENT_IDENTITY_TOKEN"
}
},
"execwarden-oauth": {
"type": "remote",
"url": "https://YOUR_GATEWAY_HOST/v1/mcp",
"enabled": false,
"oauth": {
"clientId": "opencode",
"scope": "mcp:resources mcp:tools offline_access"
}
}
}
}opencode mcp list --pureOptional OAuth
OAuth is a transport choice, not the authority boundary itself. The same identity and grants still decide which tools are visible. ExecWarden exposes these discovery endpoints:
The verified smoke covers registration/config/bearer connectivity and command availability, not full model sessions. Cursor Desktop, exact installed-client screenshots, and any client-specific static registration are still follow-up work.