OctoLink GEO

ACP Lets OpenHands Host Claude Code Without Calling the Model Itself

Author Editor

OpenHands can delegate a turn to any ACP server, including Claude Code, using that agent's own login.

Harness Engineering ACP OpenHands Claude Code

Direct answer

With ACP, OpenHands starts an external coding agent and talks to it over JSON-RPC, so the host does not need its own model API key.

A harness and the editor that hosts it used to be one product. The Agent Client Protocol splits them. OpenHands now uses ACP so a conversation can hand a turn to Claude Code, Gemini CLI, or another compatible server instead of calling a model API directly.

The SDK class is ACPAgent. It starts the ACP server as a subprocess and exchanges JSON-RPC. The server keeps its own model, tools, and loop. The host sends messages and collects results. OpenHands documentation is explicit that this path does not need an LLM API key in the application: the server authenticates itself.

What that changes for a pull-request bot

The practical case OpenHands cites is its pull-request review action. The default agent needs a model API key. Switching the agent kind to ACP and setting a command delegates the review to an agent the repo already pays for, such as a Claude or Codex subscription. The host stays the place that opens the review. The billing and the tool loop stay with the agent.

Environment variables on the agent object are the old channel. Current docs say to put credentials in the conversation secret registry, and they note that the older environment field is deprecated. Isolation of the ACP data directory has to be forwarded by the client or it never takes effect.

The harness boundary here is hosting. OpenHands is the client. Claude Code can be the loop. Neither has to be rewritten when the other ships a release.

Source: OpenHands on ACP.

FAQ

What does the host still do?
OpenHands keeps the conversation and workspace. The ACP server owns the model, the tools, and the execution loop.
Where do credentials live?
The ACP server uses its own login. OpenHands documents routing secrets through the conversation secret registry rather than an environment bag on the agent.