You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
buzz-acp agents backed by agent_command_override: "opencode" reliably hang and time out during initialization ("Request timeout — agent did not respond within 60s") on every model, on Linux. Root cause: --permission-mode sends a session/set_config_option call with a value from buzz-acp's hardcoded Claude-flavored enum (default/accept-edits/bypass-permissions/dont-ask/plan), but OpenCode's ACP mode config option only accepts build/plan. OpenCode correctly returns a JSON-RPC error for the unrecognized value, but buzz-acp appears to hang waiting rather than handling the error (it only gracefully falls back for "Method not found", e.g. from claude-code-acp, which doesn't implement session/set_config_option at all).
Reproduction (direct ACP round-trip against opencode acp, no buzz involved)
opencode --version # 1.18.9
// 1. initialize -> ok
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{}}}
// 2. session/new -> ok, returns configOptions with a "mode" option whose only// valid values are "build" and "plan"
{"jsonrpc":"2.0","id":2,"method":"session/new","params":{"cwd":"/home/me","mcpServers":[]}}
// 3. session/set_config_option with buzz-acp's default value -> hard error
{"jsonrpc":"2.0","id":3,"method":"session/set_config_option","params":{"sessionId":"<sid>","configId":"mode","value":"bypassPermissions"}}
Response to (3):
{"jsonrpc":"2.0","id":3,"error":{"code":-32602,"message":"Invalid params: mode not found: bypassPermissions","data":{"mode":"bypassPermissions"}}}
The same happens for every other PermissionMode variant buzz-acp can send (default, accept-edits, dont-ask) since none map to OpenCode's build/plan vocabulary — confirmed by inspecting session/new's returned configOptions for the mode category. There is currently no BUZZ_ACP_PERMISSION_MODE value that works with an OpenCode-backed agent.
Observed in buzz-desktop logs
buzz-acp starting: ... agent_cmd=/home/user/.bun/bin/opencode ... permission_mode=bypassPermissions ...
ERROR buzz_acp: agent timed out during init (60s) agent=0
ERROR buzz_acp: agent initialize failed: Request timeout — agent did not respond within 60s agent=1
ERROR buzz_acp: agent initialize failed: Request timeout — agent did not respond within 60s agent=2
No corresponding opencode log file is ever created for the failed instances (~/.local/share/opencode/log/), and the buzz session logger's per-session .md file stays stuck at "Status: Active" with zero further content — consistent with the agent process being stuck waiting on the session/set_config_option response rather than crashing.
This reproduces on every model (spark/glm-5.2, spark/qwen36-35b-a3b) and is unrelated to auth/network — a bare session/new + session/prompt round trip against the same opencode acp process (skipping the session/set_config_option call) completes in a few seconds.
Environment
Buzz Desktop 0.5.2, Linux x86_64
OpenCode 1.18.9
agent_command_override: "opencode" on a managed agent (per ~/.local/share/xyz.block.buzz.app/agents/managed-agents.json)
Suggested fix
Either:
Treat any non-"Method not found" error from session/set_config_option as non-fatal (log and continue without the mode override), the same way "Method not found" is already handled, or
Query session/new's returned configOptions for the mode category's valid options and only attempt session/set_config_option if the configured PermissionMode's wire value is actually in that list, or
Related but distinct: #3660 reports the same overall symptom ("Opencode acp not working" / 60s init timeout) but attributes it on Windows to a missing acp subcommand argument. On Linux, buzz-acp's default --agent-args acp is applied correctly (confirmed the spawned command is opencode acp), so that isn't the cause here — this is a distinct bug in the session/set_config_option error-handling path.
Summary
buzz-acpagents backed byagent_command_override: "opencode"reliably hang and time out during initialization ("Request timeout — agent did not respond within 60s") on every model, on Linux. Root cause:--permission-modesends asession/set_config_optioncall with a value from buzz-acp's hardcoded Claude-flavored enum (default/accept-edits/bypass-permissions/dont-ask/plan), but OpenCode's ACPmodeconfig option only acceptsbuild/plan. OpenCode correctly returns a JSON-RPC error for the unrecognized value, but buzz-acp appears to hang waiting rather than handling the error (it only gracefully falls back for"Method not found", e.g. fromclaude-code-acp, which doesn't implementsession/set_config_optionat all).Reproduction (direct ACP round-trip against
opencode acp, no buzz involved)Response to (3):
{"jsonrpc":"2.0","id":3,"error":{"code":-32602,"message":"Invalid params: mode not found: bypassPermissions","data":{"mode":"bypassPermissions"}}}The same happens for every other
PermissionModevariant buzz-acp can send (default,accept-edits,dont-ask) since none map to OpenCode'sbuild/planvocabulary — confirmed by inspectingsession/new's returnedconfigOptionsfor themodecategory. There is currently noBUZZ_ACP_PERMISSION_MODEvalue that works with an OpenCode-backed agent.Observed in buzz-desktop logs
No corresponding opencode log file is ever created for the failed instances (
~/.local/share/opencode/log/), and the buzz session logger's per-session.mdfile stays stuck at "Status: Active" with zero further content — consistent with the agent process being stuck waiting on thesession/set_config_optionresponse rather than crashing.This reproduces on every model (
spark/glm-5.2,spark/qwen36-35b-a3b) and is unrelated to auth/network — a baresession/new+session/promptround trip against the sameopencode acpprocess (skipping thesession/set_config_optioncall) completes in a few seconds.Environment
agent_command_override: "opencode"on a managed agent (per~/.local/share/xyz.block.buzz.app/agents/managed-agents.json)Suggested fix
Either:
session/set_config_optionas non-fatal (log and continue without the mode override), the same way "Method not found" is already handled, orsession/new's returnedconfigOptionsfor themodecategory's validoptionsand only attemptsession/set_config_optionif the configuredPermissionMode's wire value is actually in that list, orautopermission mode — adapter advertises it, PermissionMode omits it #2884's request for a Claudeautovariant) so OpenCode'sbuild/planmodes can be targeted directly instead of assuming Claude's vocabulary.Related but distinct: #3660 reports the same overall symptom ("Opencode acp not working" / 60s init timeout) but attributes it on Windows to a missing
acpsubcommand argument. On Linux,buzz-acp's default--agent-args acpis applied correctly (confirmed the spawned command isopencode acp), so that isn't the cause here — this is a distinct bug in thesession/set_config_optionerror-handling path.