pub struct InitMessage {Show 37 fields
pub session_id: String,
pub cwd: Option<String>,
pub model: Option<String>,
pub tools: Vec<String>,
pub mcp_servers: Vec<Value>,
pub slash_commands: Vec<String>,
pub terminal_slash_commands: Vec<String>,
pub agents: Vec<String>,
pub plugins: Vec<PluginInfo>,
pub skills: Vec<Value>,
pub claude_code_version: Option<String>,
pub messaging_socket_path: Option<String>,
pub api_key_source: Option<ApiKeySource>,
pub output_style: Option<OutputStyle>,
pub permission_mode: Option<InitPermissionMode>,
pub uuid: Option<String>,
pub memory_paths: Option<MemoryPaths>,
pub scratchpad_path: Option<String>,
pub fast_mode_state: Option<String>,
pub fast_mode_disabled_reason: Option<FastModeDisabledReason>,
pub mcp_server_errors: Option<Vec<McpServerError>>,
pub analytics_disabled: Option<bool>,
pub product_feedback_disabled: Option<bool>,
pub betas: Vec<String>,
pub capabilities: Vec<String>,
pub plugin_errors: Vec<PluginDiagnostic>,
pub plugin_warnings: Vec<PluginDiagnostic>,
pub effort: Option<String>,
pub cloud_session: Option<Value>,
pub footer_indicator: Option<FooterIndicator>,
pub worker_epoch: Option<u64>,
pub powershell_path: Option<Option<String>>,
pub startup_timing: Option<Map<String, Value>>,
pub per_turn_effort_active: Option<bool>,
pub view_mode: Option<ViewMode>,
pub original_cwd: Option<String>,
pub additional_directories: Option<Vec<String>>,
}Expand description
Init system message data - sent at session start
Fields§
§session_id: StringSession identifier
cwd: Option<String>Current working directory
model: Option<String>Model being used
tools: Vec<String>List of available tools
mcp_servers: Vec<Value>MCP servers configured
slash_commands: Vec<String>Available slash commands (e.g., “compact”, “cost”, “review”)
terminal_slash_commands: Vec<String>Slash commands only meaningful in a terminal context (CLI 2.1.232+, e.g. “doctor”, “color”)
agents: Vec<String>Available agent types (e.g., “Bash”, “Explore”, “Plan”)
plugins: Vec<PluginInfo>Installed plugins
skills: Vec<Value>Installed skills
claude_code_version: Option<String>Claude Code CLI version
messaging_socket_path: Option<String>Unix socket path for the harness’s inter-session messaging bridge (new in CLI 2.1.232; absent on older CLIs and non-bridged runs)
api_key_source: Option<ApiKeySource>How the API key was sourced
output_style: Option<OutputStyle>Output style
permission_mode: Option<InitPermissionMode>Permission mode
uuid: Option<String>Message-level unique identifier
memory_paths: Option<MemoryPaths>Memory storage paths (e.g., {“auto”: “/path/to/memory/”})
scratchpad_path: Option<String>Absolute path of this session’s scratchpad directory, for clients that read files from the session. Omitted when the scratchpad is disabled, and from the redacted init sent over the Remote Control bridge and by the hosted worker (CLI 2.1.278+).
fast_mode_state: Option<String>Fast mode toggle state (e.g., “off”)
fast_mode_disabled_reason: Option<FastModeDisabledReason>Why fast mode can’t serve right now. Absent when nothing blocks it.
mcp_server_errors: Option<Vec<McpServerError>>MCP server config entries (from --mcp-config) that failed validation
and were skipped. Affected servers are absent from mcp_servers.
analytics_disabled: Option<bool>Whether analytics collection is disabled for this session.
product_feedback_disabled: Option<bool>Whether product-feedback prompts are disabled for this session.
betas: Vec<String>API beta flags active for the session.
capabilities: Vec<String>Open-set protocol capability names supported by this CLI.
plugin_errors: Vec<PluginDiagnostic>Plugin load errors.
plugin_warnings: Vec<PluginDiagnostic>Plugin load warnings.
effort: Option<String>The effort level the session will send on its next request — after env
overrides, session state, org caps, and model-support downgrades
("low" | "medium" | "high" | "xhigh" | "max"). None when no
effort parameter will be sent, or on CLIs before 2.1.239.
cloud_session: Option<Value>Only on init frames written by the headless stream-json client of a cloud-hosted session: a per-frame snapshot of the cloud session’s id, view URL, device binding, and directory-sync state. Absent in every other mode. Stored as raw JSON (the shape is internal and evolving).
The terminal’s server-configured ◆ <text> footer pill, carried so a
host UI can render the same pill. Absent when nothing is configured
(CLI 2.1.259+).
worker_epoch: Option<u64>This cloud worker’s life (CLAUDE_CODE_WORKER_EPOCH): a new number
each time the session’s worker is started. Absent outside cloud
workers and on CLIs before 2.1.259.
powershell_path: Option<Option<String>>Windows only: the absolute path of the PowerShell binary this session
runs PowerShell commands with, or Some(None) (wire null) when
none was found. Absent on other platforms and on CLIs before 2.1.259.
startup_timing: Option<Map<String, Value>>Cold-start telemetry for hosted (CCR) sessions: named startup phases and resume-hydration counters. Absent elsewhere. Stored as raw JSON (the shape is internal and evolving) (CLI 2.1.266+).
per_turn_effort_active: Option<bool>Whether per-turn effort is active for this frame’s model. true:
an effort change keeps the prompt cache, because the effort is sent
inside the conversation at the turn where it changes. false: the
effort is sent only as the top-level parameter, so a change rewrites
the cached prefix. Mid-session the CLI reports only a change to
false (system/per_turn_effort_changed); true comes only from an
init and is provisional after a fresh process or once the
conversation’s refusals are cleared, so keep listening all session.
Absent means unknown (CLI 2.1.281+).
view_mode: Option<ViewMode>Whether the session’s transcript is in focus view. Toggled by
/focus, including over Remote Control. Present on Remote Control
bridge init frames and on the per-turn init of headless stream-json
runs; absent on hosts that do not publish it and on CLIs before
2.1.281. Re-emitted inits carry the current value — the newest frame
wins.
original_cwd: Option<String>Absolute path of the folder the session’s file permission checks are
anchored at, for clients that read files from the session. Unlike
cwd it does not follow the shell: it moves only on /cd, on
entering or leaving a worktree, and on a session restore. Omitted on
the redacted Remote Control / hosted-worker inits, in a session with
no directory, for HIPAA organizations, and on CLIs before 2.1.301.
additional_directories: Option<Vec<String>>Absolute paths of the folders added to the session (--add-dir, the
SDK additionalDirectories option, settings, a grant, or a host’s
mid-session request), in no particular order; Some(vec![]) when
there are none. Folders added only by repository-delivered settings
files are left out. Grants nothing: the CLI’s own check decides every
read. None means not told (not “none”): omitted on the same lanes as
original_cwd, by hosts that have not wired it,
and on CLIs before 2.1.301.