Skip to content

ACP permission + mode bridge: request_permission → fork approvals; ask/accept-edits/auto-approve + model/effort config options #1711

Closed

Description

@dezren39

Part of the Vibe-embedding epic (ACP-hosted vibe-acp).

Scope

Bridge ACP's host-delegated control surface into the fork's own UX and policy:

  • session/request_permission: when the agent asks, surface the tool call + its options (allow_once, allow_always, reject_once, reject_always as offered) through the fork's approval flow; return the user's selection as the outcome. Timeouts/cancel must resolve as rejection, never silent approval.
  • Session modes as first-class session config: ask (approval for tool executions), accept-edits (auto-approve file edits only — the agent's default), auto-approve (approve everything). Expose via session/set_mode and/or the mode config option the agent advertises in session/new.
  • Model + effort config options: surface the agent's model select (tonight: mistral-medium-3.5, alias mistral-vibe-cli-latest) and reasoning-effort select (off/high observed) as settable session options, mapped to the fork's variant system.

Open verification from the spike

The 2026-11-05 spike turn ran under the default accept-edits mode and its bash call executed with zero permission requests — expected for edits, but the bash-under-accept-edits behavior needs a pinned answer: run the same turn in ask mode and prove the session/request_permission round-trip fires and is honored (deny path included: a rejected command must not execute).

Acceptance

  • In ask mode, a bash tool call produces exactly one permission request; allow → executes; deny → does not execute and the agent is told.
  • Switching mode/model/effort mid-session takes effect on the next turn and is reflected in the session record.

Activity

  1. dezren39 commented on Nov 5, 2026

    @dezren39
    Author

    Spike verification update (2026-11-05): the ALLOW path of this issue's open verification is now proven.

    • session/set_mode to ask works (empty result = success).
    • In ask mode, a plain echo tool call produced ZERO permission requests; a create+rm sequence produced exactly ONE session/request_permission (options: allow_once / allow_always / allow_always_permanent / reject_once). Host selected allow_always → command executed, deletion verified by the agent itself.
    • So the trigger is risk classification by the agent, not the mode alone; trusted_folders.toml is empty, so folder trust is not the cause.

    Remaining for this issue's acceptance: the DENY path (answer reject_once → the command must not execute and the agent must be told), and the classification matrix across ask / accept-edits / smart-approve / auto-approve. Transcripts: laptop ~/work/spikes/vibe-acp-embed-2026-11-05/transcript-ask.jsonl + transcript-rm.jsonl.

  2. dezren39 commented on Nov 5, 2026

    @dezren39
    Author

    CLOSED with parent epic #1709 — direction corrected by Drew (2026-11-05): *-direct providers emulate the first-party wire; no ACP embedding. See doctrine issue #1717. The auth/usage concerns that remain valid (keyring credential lifecycle, call_source attribution) are carried in #1717's status and audit sections.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions