feat(acp): opt-in profile tool policy for full-capability hosts - #70326
feat(acp): opt-in profile tool policy for full-capability hosts#70326joelbrilliant wants to merge 5 commits into
Conversation
Review requestOpt-in only. Editors keep the coding What this adds acp:
tool_policy: profile # full profile tools for remote ACP hosts
Why Live proof Related open PRs (complementary, not duplicates)
Happy to adjust naming or defaults if maintainers prefer a different config shape. |
teknium1
left a comment
There was a problem hiding this comment.
Thanks for making the ACP capability choice opt-in and routing profile mode through the shared resolver. The current-main premise is verified: acp_adapter/session.py:625-628 still hard-codes hermes-acp, and the ACP guide says platform_toolsets.acp cannot narrow that surface (website/docs/user-guide/features/acp.md:275-276).
Problems
acp_adapter/session.py:209falls back tohermes-acpwhen_get_platform_tools()returns an empty list. That defeats the shared resolver's explicit-empty contract (hermes_cli/tools_config.py:2347-2358) and grants the full ACP toolset to a profile that intentionally selected no configurable tools.acp_adapter/server.py:819reloads config to decide MCP admission instead of using the policy that createdstate.agent. A config change beforesession/load,session/resume, orsession/forkcan make host MCP admission disagree with that session's existing tool policy.
Suggested changes
- Preserve an empty resolver result in profile mode; add CLI-empty and ACP-empty policy tests.
- Store the resolved policy on the session/agent and use it for host-MCP admission; test a config change after construction.
This is an automated hermes-sweeper review.
Add acp.tool_policy so ACP hosts can use a profile's local CLI tool configuration instead of the coding-only hermes-acp default. Profile mode resolves tools through the canonical platform resolver, applies the same policy on session restore, and ignores host MCP expansion so the host cannot broaden the selected profile. Default remains hermes-acp for editor compatibility. No config version bump.
Some clean-env runners lack the optional ACP package; skip cleanly.
Explain profile vs hermes-acp tool policy so remote ACP hosts (Buzz and similar) can match interactive CLI tools without changing editor defaults.
61fb321 to
625aa26
Compare
Summary
Add
acp.tool_policyso ACP hosts (Buzz, Zed, and other full-capability hosts) can use a Hermes profile's local CLI tool configuration instead of the coding-onlyhermes-acpdefault.hermes-acp(editor-compatible, no behaviour change)acp.tool_policy: profileresolves tools via the canonical_get_platform_toolspath againstplatform_toolsets.cli(or explicitplatform_toolsets.acpwhen set)acp.tool_policyinto the agent config tabWhy
Remote ACP hosts that attach an existing full Hermes profile need the profile's configured tools (skills, memory, kanban, cron, delegation, …), not the reduced coding toolset. This is generic ACP surface — no host-specific code.
Live dogfood: Buzz Desktop owner-only Rocky DM with full profile tools after setting
acp.tool_policy: profile(companion Buzz PR #2633).Relationship to other open PRs
platform_toolsets.acpalwaystool_policy: profilewe already honour explicitplatform_toolsets.acp, else mirror CLIagent.disabled_toolsets_get_platform_tools, which already applies global disablesA deeper first-class product integration with Buzz (beyond ACP stdio) is still best owned by Nous Research if desired later. This PR unblocks full-capability hosts now without breaking editors.
Test plan
scripts/run_tests.sh tests/acp/test_tool_policy.py -q(13 passed)hermes-acp+ profile MCP