OpenHands / OpenHands/software-agent-sdk
Upgrade Claude ACP pin without regressing ask_agent session forks
Nobody has claimed this yet.
- 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.0replaced the prior resume-based fork implementation with@anthropic-ai/claude-agent-sdk's nativeforkSession()path.- OpenHands' strict ACP example then failed with a generic ACP
Internal errorduringask_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
latestresolved to0.75.1.
Reproduction
Using the flow in examples/01_standalone_sdk/40_acp_agent_example.py:
- Start an
ACPAgentwith@agentclientprotocol/claude-agent-acp@0.75.1. - Run a normal text turn.
- Run a multimodal text-and-image turn.
- Call
conversation.ask_agent(...), which forks the ACP session and prompts the fork. - Observe a generic ACP
Internal errorfrom 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_VERSIONinopenhands-sdk/openhands/sdk/settings/acp_install_catalog.pyonly 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.0to 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.pyretains 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
- Release PR: OpenHands/software-agent-sdk#4869
- Upstream fork implementation: agentclientprotocol/claude-agent-acp#1046
- Upstream fork restoration: agentclientprotocol/claude-agent-acp#1089
This issue was created by an AI agent (OpenHands) on behalf of the user.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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