English
Documentation
ACP Support

ACP Support

Use OpenCode in any ACP-compatible editor.

OpenCode supports the Agent Client Protocol (opens in a new tab) or (ACP), allowing you to use it directly in compatible editors and IDEs.

For a list of editors and tools that support ACP, check out the ACP progress report (opens in a new tab).

ACP is an open protocol that standardizes communication between code editors and AI coding agents.


Configure

To use OpenCode via ACP, configure your editor to run the opencode acp command.

The command starts OpenCode as an ACP-compatible subprocess that communicates with your editor over JSON-RPC via stdio.

Below are examples for popular editors that support ACP.


Zed

Add to your Zed (opens in a new tab) configuration (~/.config/zed/settings.json):

~/.config/zed/settings.json
{
  "agent_servers": {
    "OpenCode": {
      "command": "opencode",
      "args": ["acp"]
    }
  }
}

To open it, use the agent: new thread action in the Command Palette.

You can also bind a keyboard shortcut by editing your keymap.json:

keymap.json
[
  {
    "bindings": {
      "cmd-alt-o": [
        "agent::NewExternalAgentThread",
        {
          "agent": {
            "custom": {
              "name": "OpenCode",
              "command": {
                "command": "opencode",
                "args": ["acp"]
              }
            }
          }
        }
      ]
    }
  }
]

JetBrains IDEs

Add to your JetBrains IDE (opens in a new tab) acp.json according to the documentation (opens in a new tab):

acp.json
{
  "agent_servers": {
    "OpenCode": {
      "command": "/absolute/path/bin/opencode",
      "args": ["acp"]
    }
  }
}

To open it, use the new 'OpenCode' agent in the AI Chat agent selector.


Avante.nvim

Add to your Avante.nvim (opens in a new tab) configuration:

{
  acp_providers = {
    ["opencode"] = {
      command = "opencode",
      args = { "acp" }
    }
  }
}

If you need to pass environment variables:

{
  acp_providers = {
    ["opencode"] = {
      command = "opencode",
      args = { "acp" },
      env = {
        OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
      }
    }
  }
}

CodeCompanion.nvim

To use OpenCode as an ACP agent in CodeCompanion.nvim (opens in a new tab), add the following to your Neovim config:

require("codecompanion").setup({
  interactions = {
    chat = {
      adapter = {
        name = "opencode",
        model = "claude-sonnet-4",
      },
    },
  },
})

This config sets up CodeCompanion to use OpenCode as the ACP agent for chat.

If you need to pass environment variables (like OPENCODE_API_KEY), refer to Configuring Adapters: Environment Variables (opens in a new tab) in the CodeCompanion.nvim documentation for full details.

Support

OpenCode works the same via ACP as it does in the terminal. All features are supported:

⚠️

Some built-in slash commands like /undo and /redo are currently unsupported.

  • Built-in tools (file operations, terminal commands, etc.)
  • Custom tools and slash commands
  • MCP servers configured in your OpenCode config
  • Project-specific rules from AGENTS.md
  • Custom formatters and linters
  • Agents and permissions system