Skip to content

serve --acp does not implement ACP session/list (and session/load), so ACP clients cannot enumerate or resume existing codewhale sessions #5864

Description

@senka9h

serve --acp does not implement ACP session/list / session/load, so ACP clients cannot enumerate or resume existing codewhale sessions

Environment

  • Package / version: codewhale npm wrapper 0.9.11, native binary codewhale 0.9.11 (Windows x64)
  • Command under test: codewhale serve --acp (ACP v1 server over stdio)

Summary

codewhale serve --acp implements initialize and session/new, but the ACP session surface is otherwise empty: the initialize response sets loadSession: false and sessionCapabilities: {}, and session/list returns -32601 method not found.

ACP clients that surface session history / import / resume (IDEs and agent-manager clients) rely on these: they look at sessionCapabilities in the handshake and then call session/list (and session/load) to re-open past conversations. Because codewhale exposes neither, those clients can see codewhale as a registered agent but can neither list nor resume any of its existing sessions — even though codewhale has a persistent on-disk session store (~/.codewhale/sessions) and the CLI can list and resume them (codewhale sessions / codewhale resume <id>).

Reproduction

Start the ACP server and speak ACP v1 over stdio:

codewhale serve --acp

Handshake:

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{},"clientInfo":{"name":"t","version":"1"}}}

Actual behavior

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":1,"agentCapabilities":{"loadSession":false,"modelSelection":true,"promptCapabilities":{"image":false,"audio":false,"embeddedContext":true},"mcpCapabilities":{"http":false,"sse":false},"sessionCapabilities":{}},"agentInfo":{"name":"codewhale","title":"codewhale","version":"0.9.11"}}}

Then:

{"jsonrpc":"2.0","id":2,"method":"session/list","params":{"cwd":"C:\\Users\\Owner"}}
{"jsonrpc":"2.0","id":2,"error":{"code":-32601,"message":"method not found: session/list"}}

Expected behavior

  • initialize.agentCapabilities.sessionCapabilities.list === true (persistent session storage is available).
  • session/list returns the existing sessions (id, cwd, title, updatedAt → _meta), matching the ACP session-list RFD.
  • Ideally session/load (loadSession: true, per the session-resume RFD) so clients can re-open a past session instead of only listing it.

Impact

Codewhale is the only common deployment where an ACP agent cannot enumerate or resume its own stored sessions, while comparable agents expose both. Past codewhale sessions are only recoverable from the terminal.

Suggested fix

In the serve --acp handler:

  1. Expose ACP session/list: enumerate the local session store (.codewhale/sessions) and return { sessionId, cwd, title, updatedAt, _meta }, scoped to params.cwd when provided.
  2. Advertise sessionCapabilities.list: true (and loadSession: true once session/load is implemented).
  3. Optionally implement session/load to resume an existing session id.

Notes

  • Codewhale already exposes session listing over its own Runtime API (GET /v1/sessions, see docs/RUNTIME_API.md); the same data just needs to be surfaced through the ACP stdio adapter.
  • Related ACP work: ACP Function Enhancement #5863 (session config options / modes / models) — distinct capability.
  • ACP references: https://agentclientprotocol.com/rfds/session-list and https://agentclientprotocol.com/rfds/session-resume. The RFDs allow omitting session/list only for agents without persistent storage; codewhale has persistent storage (~/.codewhale/sessions), so omitting it leaves ACP clients unable to use codewhale's session history.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    • Status
      Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions