The machinery is built and tested — declarations, the compiler, the gateway, the call token,
per-actor credentials, outbound safety. No connector ships yet, so today you declare your
own. A GitHub and an HTTP connector are the next thing on the roadmap.
How a call travels
1. Declare it
Most connectors are data, not code: an auth scheme, averify request, and a list of tools
describing where each parameter goes. Nothing runs that the schema did not describe.
{param} placeholders are allowed in the path only. Everything else is placed by the
params block, or by convention: path parameters by name, then the rest to the query for a
GET and to the body otherwise.
A tool is mutating unless it is a GET, and a discard session refuses mutating tools —
so a read-only session cannot open issues.
2. Attach it to a workspace
Attaching says this user’s workspace may use this connector, with this credential, limited to these tools:3. Wire the gateway and the endpoint
Two pieces on your side: a gateway that knows every connector and can resolve a credential reference into a real secret, and an endpoint the shim posts to.BashTool the three hooks that put the shim in the guest. connectorSupport fills
all three at once, because they only work together — the shim is useless without the token,
the token is useless without the shim on PATH:
4. The agent uses it
From inside a command, three verbs — and the system prompt tells the model about them automatically when the session has connectors:nh exists only inside the sandbox. It is not the CLI — different program,
different powers.Outbound safety
Declared, not hoped for.hosts is enforced on every request, redirects are bounded, and
private address ranges are refused — so a connector cannot be aimed at the host it runs on, or
at your metadata service. A per-command call ceiling bounds a command that loops, because a
bug that makes unbounded requests on a customer’s credential is an expensive one.
Remote MCP servers
A remote MCP server is one kind of connector:kind: "mcp" with a server_url, its tools
discovered with tools/list rather than declared. The schema accepts and validates it today;
wiring it to the gateway is on the roadmap.