[ACP] Opencode sets rawInput back to empty #4454

Open
opened 2026-02-16 17:43:49 -05:00 by yindo · 4 comments
Owner

Originally created by @r1bilski on GitHub (Jan 8, 2026).

Originally assigned to: @rekram1-node on GitHub.

Description

Here is an example tool call when using opencode acp (removed irrelevant fields):

[
  {
    "update": {
      "kind": "execute",
      "rawInput": {},
      "sessionUpdate": "tool_call",
      "status": "pending",
      "title": "bash",
      "toolCallId": "id1"
    }
  },
  {
    "update": {
      "rawInput": {
        "command": "echo 'foo'",
        "description": "Print 'foo'"
      },
      "sessionUpdate": "tool_call_update",
      "status": "in_progress",
      "toolCallId": "id1"
    }
  },
  {
    "toolCall": {
      "kind": "execute",
      "rawInput": {},
      "status": "pending",
      "title": "bash",
      "toolCallId": "id1"
    }
  },
  {
    "update": {
      "rawInput": {
        "command": "echo 'foo'",
        "description": "Print 'foo'"
      },
      "sessionUpdate": "tool_call_update",
      "status": "in_progress",
      "toolCallId": "id1"
    }
  }
]

As you can see, we:

  1. Get the initial SessionUpdate for the tool call
  2. Get an update with command and description
  3. Get a permission request that sets rawInput back to {}
  4. Get an update for the status that sets rawInput back to the state from before the permission request.

This is unfortunate, because that means when we display the details of the tool call to the user, they have nothing to base their decision on except the title and kind, which didn't get overwritten.

Plugins

None

OpenCode version

1.1.4

Steps to reproduce

  1. Set up an ACP session
  2. Get the agent to request a permission

Screenshot and/or share link

No response

Operating System

Alpine Linux

Terminal

st

Originally created by @r1bilski on GitHub (Jan 8, 2026). Originally assigned to: @rekram1-node on GitHub. ### Description Here is an example tool call when using opencode acp (removed irrelevant fields): ```json [ { "update": { "kind": "execute", "rawInput": {}, "sessionUpdate": "tool_call", "status": "pending", "title": "bash", "toolCallId": "id1" } }, { "update": { "rawInput": { "command": "echo 'foo'", "description": "Print 'foo'" }, "sessionUpdate": "tool_call_update", "status": "in_progress", "toolCallId": "id1" } }, { "toolCall": { "kind": "execute", "rawInput": {}, "status": "pending", "title": "bash", "toolCallId": "id1" } }, { "update": { "rawInput": { "command": "echo 'foo'", "description": "Print 'foo'" }, "sessionUpdate": "tool_call_update", "status": "in_progress", "toolCallId": "id1" } } ] ``` As you can see, we: 1. Get the initial SessionUpdate for the tool call 2. Get an update with command and description 3. Get a permission request that sets `rawInput` back to `{}` 4. Get an update for the status that sets `rawInput` back to the state from before the permission request. This is unfortunate, because that means when we display the details of the tool call to the user, they have nothing to base their decision on except the title and kind, which didn't get overwritten. ### Plugins None ### OpenCode version 1.1.4 ### Steps to reproduce 1. Set up an ACP session 2. Get the agent to request a permission ### Screenshot and/or share link _No response_ ### Operating System Alpine Linux ### Terminal st
yindo added the bug label 2026-02-16 17:43:49 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Jan 8, 2026):

This issue might be a duplicate of existing issues. Please check:

  • #7356: ACP: MCP tool updates missing kind, title, rawInput for running/error/completed states

Feel free to ignore if this doesn't address your specific case.

@github-actions[bot] commented on GitHub (Jan 8, 2026): This issue might be a duplicate of existing issues. Please check: - #7356: ACP: MCP tool updates missing kind, title, rawInput for running/error/completed states Feel free to ignore if this doesn't address your specific case.
Author
Owner

@r1bilski commented on GitHub (Jan 8, 2026):

Ref: above issue, based on my reading of the spec I think there is no reason to send all that information on each update.
ToolCallUpdate says:

Used to report progress and results as tools execute. All fields except the tool call ID are optional - only changed fields need to be included.

@r1bilski commented on GitHub (Jan 8, 2026): Ref: above issue, based on my reading of the spec I think there is no reason to send all that information on each update. [ToolCallUpdate](https://agentclientprotocol.com/protocol/draft/schema#toolcallupdate) says: > Used to report progress and results as tools execute. All fields except the tool call ID are optional - only changed fields need to be included.
Author
Owner

@rekram1-node commented on GitHub (Jan 8, 2026):

/oc I think? this may have been a recent regression, investigate the acp implementation and make a fix if u can figure out the issue

@rekram1-node commented on GitHub (Jan 8, 2026): /oc I think? this may have been a recent regression, investigate the acp implementation and make a fix if u can figure out the issue
Author
Owner

@opencode-agent[bot] commented on GitHub (Jan 8, 2026):

Created PR #7374

New%20session%20-%202026-01-08T20%3A15%3A04.016Z
opencode session  |  github run

@opencode-agent[bot] commented on GitHub (Jan 8, 2026): Created PR #7374 <a href="https://opencode.ai/s/EVmifgP9"><img width="200" alt="New%20session%20-%202026-01-08T20%3A15%3A04.016Z" src="https://social-cards.sst.dev/opencode-share/TmV3IHNlc3Npb24gLSAyMDI2LTAxLTA4VDIwOjE1OjA0LjAxNlo=.png?model=opencode/claude-opus-4-5&version=1.1.6&id=EVmifgP9" /></a> [opencode session](https://opencode.ai/s/EVmifgP9)&nbsp;&nbsp;|&nbsp;&nbsp;[github run](/anomalyco/opencode/actions/runs/20830363826)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#4454