Skip to content

fix(acp): advertise permissionModes capability + handle set_permission_mode#197

Merged
yishuiliunian merged 1 commit into
mainfrom
fix/acp-permission-mode-capability
Jun 11, 2026
Merged

fix(acp): advertise permissionModes capability + handle set_permission_mode#197
yishuiliunian merged 1 commit into
mainfrom
fix/acp-permission-mode-capability

Conversation

@yishuiliunian

Copy link
Copy Markdown
Contributor

Problem

AgentsMesh's workspace permission selector hardcoded Claude Code's 4 modes
(bypassPermissions/acceptEdits/default/dontAsk) and sent them to every ACP agent.
loopal only accepts bypass/ask_dangerous/ask_any_write, so the selector was
semantically wrong and non-functional for loopal pods — Claude Code's permission
rules leaked into loopal's control surface.

Fix (loopal side)

  • adapter/lifecycle.rs: advertise agentsmeshExtensions.permissionModes
    ["bypass","ask_dangerous","ask_any_write"] in the initialize response
    (mirrors feat(acp): AgentsMesh _loopal/* control-panel extension #195's controlRequest), so AgentsMesh renders loopal's modes.
  • adapter/control_command.rs: map the set_permission_mode control subtype to
    ControlCommand::PermissionModeSwitch. Runtime path
    (input_control_configPermissionMode::from_str) already wired.

AgentsMesh side (separate change)

Runner parses the capability + forwards via session snapshot; core stores
supported_permission_modes with a merge guard; web selector renders the
advertised modes dynamically (Claude fallback for agents that don't advertise).

Test

  • control_command.rs: set_permission_modePermissionModeSwitch; missing mode → None
  • lifecycle.rs: initialize advertises both controlRequest + permissionModes
  • bazel test //crates/loopal-acp/... + clippy + rustfmt all green

…n_mode

Advertise loopal's 3 permission modes (bypass/ask_dangerous/ask_any_write) in
the initialize response's agentsmeshExtensions so the AgentsMesh permission
selector renders loopal's own modes instead of leaking Claude Code's 4-mode set.
Map the set_permission_mode control subtype to PermissionModeSwitch; the runtime
path (input_control_config -> PermissionMode::from_str) is already wired.
@yishuiliunian yishuiliunian merged commit f650557 into main Jun 11, 2026
7 of 8 checks passed
@yishuiliunian yishuiliunian deleted the fix/acp-permission-mode-capability branch June 11, 2026 15:13
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