AgentSessionManager.PermissionMode (AgentSessionManager v0.8.0)

Copy Markdown View Source

Normalized permission modes for agent session execution.

Each AI provider has its own mechanism for controlling tool permissions:

  • Claude: --permission-mode flag with modes like bypassPermissions
  • Codex: --full-auto and --dangerously-bypass-approvals-and-sandbox flags
  • Amp: --dangerously-allow-all flag

This module defines a provider-agnostic set of permission modes that each adapter maps to its SDK's native semantics.

Modes

ModeDescription
:defaultProvider's default permission handling
:accept_editsAuto-accept file edit operations (Claude-specific; no-op on others)
:planPlan mode — generate plan before executing (Claude-specific; no-op on others)
:full_autoSkip permission prompts, allow all tool calls
:dangerously_skip_permissionsBypass all approvals and sandboxing (most permissive)

Summary

Functions

Returns all valid permission modes.

Normalizes a permission mode value.

Returns true if the given value is a valid permission mode atom.

Types

t()

@type t() ::
  :default | :accept_edits | :plan | :full_auto | :dangerously_skip_permissions

Functions

all()

@spec all() :: [t()]

Returns all valid permission modes.

normalize(mode)

@spec normalize(term()) :: {:ok, t() | nil} | {:error, String.t()}

Normalizes a permission mode value.

Accepts atoms, strings, or nil. Returns {:ok, mode} for valid values or {:error, reason} for invalid ones. nil input returns {:ok, nil}.

valid?(mode)

@spec valid?(term()) :: boolean()

Returns true if the given value is a valid permission mode atom.