OpenHands / OpenHands/software-agent-sdk

Upgrade Claude ACP pin without regressing ask_agent session forks

Open
#4,884 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

acp dependencies
Dominant language
Python
Stars
1.1k
Forks
542
Avg merge
1d 19h
Merged PRs (30d)
137

Description

Summary

Upgrade the built-in Claude Code ACP launcher from @agentclientprotocol/claude-agent-acp@0.63.0 to a current release without regressing ACPAgent.ask_agent() session forks.

The SDK intentionally remains pinned to 0.63.0 for the v1.45.0 release. An example previously bypassed this pin with an unversioned npx command and began resolving npm latest (0.75.1), exposing a fork regression.

What changed upstream

  • claude-agent-acp@0.71.0 replaced the prior resume-based fork implementation with @anthropic-ai/claude-agent-sdk's native forkSession() path.
  • OpenHands' strict ACP example then failed with a generic ACP Internal error during ask_agent().
  • Upstream subsequently merged agentclientprotocol/claude-agent-acp#1089, “fix: restore session forks and speed up loading,” but OpenHands still observed the failure while npm latest resolved to 0.75.1.

Reproduction

Using the flow in examples/01_standalone_sdk/40_acp_agent_example.py:

  1. Start an ACPAgent with @agentclientprotocol/claude-agent-acp@0.75.1.
  2. Run a normal text turn.
  3. Run a multimodal text-and-image turn.
  4. Call conversation.ask_agent(...), which forks the ACP session and prompts the fork.
  5. Observe a generic ACP Internal error from the fork/prompt path.

The same strict flow passes with the catalog-pinned 0.63.0; see OpenHands example run 34040893911 (40_acp_agent_example.py, 51.4 seconds).

Scope

  • Identify whether the remaining incompatibility is in the OpenHands ACP client sequence, claude-agent-acp, or the underlying Claude Agent SDK.
  • Upgrade CLAUDE_AGENT_ACP_VERSION in openhands-sdk/openhands/sdk/settings/acp_install_catalog.py only after the strict fork scenario works.
  • Regenerate/check all derived provider metadata and image installation data.
  • Do not catch or suppress ACP fork errors in the example.

Acceptance criteria

  • The centralized Claude ACP pin is upgraded from 0.63.0 to a current, explicitly pinned version.
  • A live conformance test covers: text turn → image turn → fork → prompt fork.
  • examples/01_standalone_sdk/40_acp_agent_example.py retains strict error propagation and passes unchanged except for any necessary supported API migration.
  • Existing ACP unit and live conformance tests pass.
  • Generated TypeScript ACP provider metadata and Docker preinstall metadata remain in sync.
  • The complete examples workflow passes.
  • If the defect is upstream, a minimal upstream reproduction is filed/linked and the SDK pin remains unchanged until a fixed upstream release is available.

References

This issue was created by an AI agent (OpenHands) on behalf of the user.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with examples/01_standalone_sdk/40_acp_agent_example.py and the centralized pin in openhands-sdk/openhands/sdk/settings/acp_install_catalog.py. Reproduce the text, image, fork, and fork-prompt sequence with the pinned and candidate ACP versions, then inspect existing ACP unit and live conformance tests. Done means a supported pinned upgrade passes the strict flow, tests, generated provider metadata, Docker metadata, and examples workflow; otherwise document the upstream reproduction and retain the pin.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, node.js, python, typescript
Domain
ai, backend-api-design, build-system, testing-qa
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.