Packages
claude_code
0.30.0
0.36.5
0.36.4
0.36.3
0.36.2
0.36.1
0.36.0
0.35.0
0.34.0
0.33.1
0.32.2
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Claude Agent SDK for Elixir – Build AI agents with Claude Code
Current section
Files
Jump to
Current section
Files
lib/claude_code/session/permission_mode.ex
defmodule ClaudeCode.Session.PermissionMode do
@moduledoc """
Permission mode for controlling how Claude handles permission requests.
## Values
* `:default` - Standard permission prompting
* `:accept_edits` - Auto-accept file edits without prompting
* `:bypass_permissions` - Bypass all permission checks (requires `:allow_dangerously_skip_permissions`)
* `:delegate` - Delegate permission decisions
* `:dont_ask` - Never prompt for permissions
* `:plan` - Planning mode only
"""
@type t ::
:default
| :accept_edits
| :bypass_permissions
| :delegate
| :dont_ask
| :plan
| String.t()
@mapping %{
"default" => :default,
"acceptEdits" => :accept_edits,
"bypassPermissions" => :bypass_permissions,
"delegate" => :delegate,
"dontAsk" => :dont_ask,
"plan" => :plan
}
@doc """
Parses a camelCase permission mode string from the CLI into an atom.
Returns `nil_fallback` (default `nil`) for nil input. Unrecognized string
values are kept as strings for forward compatibility.
## Examples
iex> ClaudeCode.Session.PermissionMode.parse("default")
:default
iex> ClaudeCode.Session.PermissionMode.parse("acceptEdits")
:accept_edits
iex> ClaudeCode.Session.PermissionMode.parse("bypassPermissions")
:bypass_permissions
iex> ClaudeCode.Session.PermissionMode.parse("futureMode")
"futureMode"
iex> ClaudeCode.Session.PermissionMode.parse(nil)
nil
iex> ClaudeCode.Session.PermissionMode.parse(nil, :default)
:default
"""
@spec parse(String.t() | nil, t() | nil) :: t() | nil
def parse(value, nil_fallback \\ nil)
def parse(value, _nil_fallback) when is_binary(value), do: Map.get(@mapping, value, value)
def parse(_nil, nil_fallback), do: nil_fallback
@doc """
Encodes a permission mode atom to its camelCase CLI string.
## Examples
iex> ClaudeCode.Session.PermissionMode.encode(:default)
"default"
iex> ClaudeCode.Session.PermissionMode.encode(:accept_edits)
"acceptEdits"
iex> ClaudeCode.Session.PermissionMode.encode(:bypass_permissions)
"bypassPermissions"
"""
@spec encode(t()) :: String.t()
def encode(:default), do: "default"
def encode(:accept_edits), do: "acceptEdits"
def encode(:bypass_permissions), do: "bypassPermissions"
def encode(:delegate), do: "delegate"
def encode(:dont_ask), do: "dontAsk"
def encode(:plan), do: "plan"
def encode(mode) when is_binary(mode), do: mode
end