ClaudeCode.Message.SystemMessage.HookResponse (ClaudeCode v0.36.3)
View SourceRepresents a hook response system message from the Claude CLI.
Emitted when a hook completes execution with its final result.
Fields
:type- Always:system:subtype- Always:hook_response:session_id- Session identifier:uuid- Message UUID:hook_id- Unique identifier for this hook execution:hook_name- Name of the hook that executed:hook_event- Event that triggered the hook:output- Combined or processed output:stdout- Standard output from the hook process:stderr- Standard error from the hook process:exit_code- Exit code of the hook process:outcome- Outcome of the hook execution (:success,:error, or:cancelled)
JSON Format
{
"type": "system",
"subtype": "hook_response",
"session_id": "...",
"uuid": "...",
"hook_id": "hook_abc123",
"hook_name": "my_hook",
"hook_event": "on_tool_start",
"output": "done",
"stdout": "done",
"stderr": null,
"exit_code": 0,
"outcome": "success"
}
Summary
Functions
Type guard to check if a value is a HookResponse.
Creates a new HookResponse from JSON data.
Types
@type t() :: %ClaudeCode.Message.SystemMessage.HookResponse{ exit_code: integer() | nil, hook_event: String.t(), hook_id: String.t(), hook_name: String.t(), outcome: :success | :error | :cancelled | nil, output: String.t() | nil, session_id: String.t(), stderr: String.t() | nil, stdout: String.t() | nil, subtype: :hook_response, type: :system, uuid: String.t() | nil }
Functions
Type guard to check if a value is a HookResponse.
Creates a new HookResponse from JSON data.
The "outcome" string is parsed to an atom (:success, :error, or :cancelled).
Examples
iex> HookResponse.new(%{
...> "type" => "system",
...> "subtype" => "hook_response",
...> "session_id" => "session-1",
...> "hook_id" => "hook_abc",
...> "hook_name" => "my_hook",
...> "hook_event" => "on_tool_start",
...> "exit_code" => 0,
...> "outcome" => "success"
...> })
{:ok, %HookResponse{type: :system, subtype: :hook_response, outcome: :success, ...}}
iex> HookResponse.new(%{"type" => "assistant"})
{:error, :invalid_message_type}