Skip to content

feat: Report Claude SDK and Codex tool, approval and compaction activity - #906

Open
AlexanderZ-Band wants to merge 4 commits into
mainfrom
feat/python-sdk-report-activity-detail-to-the-platform-claude-codex-INT-1744
Open

AlexanderZ-Band wants to merge 4 commits into
mainfrom
feat/python-sdk-report-activity-detail-to-the-platform-claude-codex-INT-1744

Conversation

@AlexanderZ-Band

Copy link
Copy Markdown
Collaborator

Why

Band tools already show in the room as turn activity (#841). Claude SDK and Codex run most of their work through their own tools, approval prompts and, for Codex, context compaction. Without a mapping for those, the room shows only "reasoning" while Bash runs or the agent waits on a person.

What

  • Claude SDK
    • A native tool shows tool_call with its name from its ToolUseBlock until its ToolResultBlock arrives, then returns to reasoning.
    • Band tools (mcp__band__*) are skipped because MCP dispatch_tool already reports them.
    • A can_use_tool approval shows permission until the room has no unanswered approvals left.
  • Codex
    • Tool items (command execution, file change, MCP tool call, web search, image view, collab agent tool call) show tool_call from item/started until item/completed.
    • A contextCompaction item shows memory from its start until it completes.
    • Manual approvals show permission.
    • Codex's own custom tools (item/tool/call) report where they run.
  • MCP engine custom tools: these run inside tool_activity on the room's tools, which covers custom tools on Claude SDK, OpenCode, Letta and the ACP client.
  • Narration off: with emit=(), Claude running Bash still reports tool_call Bash and posts no tool narration.
  • ActivityRecorder.waiting is added to band.testing.activity for permission assertions.

Scope

  • Third layer of INT-1744.
  • Claude has no compaction mapping: the installed SDK has a PreCompact hook but no end signal.
  • Parallel native tools resolve "latest wins".
  • Coming in later PRs:
    • the Anthropic, Gemini, Copilot SDK and NOOA tool loops;
    • OpenCode and the ACP family;
    • the hook and stream adapters, including Strands custom tools.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DFmR3J53UqbsYDMmTUd3Rb

AlexanderZ-Band and others added 4 commits October 21, 2026 20:54
A native tool's streamed tool_use shows its name until its tool_result,
then reasoning; Band MCP tools already report through dispatch_tool and
are skipped. A manual approval shows permission until the room has no
unanswered approval left.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFmR3J53UqbsYDMmTUd3Rb
Signed-off-by: Alexander Zaikman <alexander.zaikman@band.ai>
A tool item shows its name from item/started to item/completed, and a
contextCompaction item shows memory until it completes. Custom tools Codex
asks the adapter to run show their name while they run; Band tools already
report themselves. A manual approval shows permission until the room has
no unanswered approval left.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFmR3J53UqbsYDMmTUd3Rb
Signed-off-by: Alexander Zaikman <alexander.zaikman@band.ai>
A room-bound custom tool on the embedded MCP engine shows its name on its
room's turn while it runs, then reasoning. This covers every adapter that
serves custom tools through the engine (Claude SDK, OpenCode, Letta, ACP
client).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFmR3J53UqbsYDMmTUd3Rb
Signed-off-by: Alexander Zaikman <alexander.zaikman@band.ai>
With emit=() a native Bash call still shows tool_call Bash on the turn,
and the room gets no tool_call or tool_result events.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFmR3J53UqbsYDMmTUd3Rb
Signed-off-by: Alexander Zaikman <alexander.zaikman@band.ai>
@linear-code

linear-code Bot commented Oct 21, 2026

Copy link
Copy Markdown

INT-1744

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant