~/content/acp-support

ACP Support

Use OpenCode in any ACP-compatible editor.

last_updated: "2026-01-20"

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

Note

πŸ’‘ Tip

For a list of editors and tools that support ACP, check out the ACP progress report.

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 configuration (~/.config/zed/settings.json):

bash
{
  "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:

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

###JetBrains IDEs

Add to your JetBrains IDE acp.json according to the documentation:

bash
{
  "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 configuration:

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

If you need to pass environment variables:

bash
{
  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, add the following to your Neovim config:

bash
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 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:

Note

πŸ“ Note

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
Comments (Coming Soon)

Configure Giscus in environment variables to enable comments.