Login
Wire protocol

Wire protocol

The daemon ↔ client protocol, protocol version 1. Generated from the schema.

Methods

initialize client → server

Negotiate the protocol version and exchange identity. Must be the first request on a connection, and is the only one accepted before Ready.

Params
Initialize_Params
Result
Initialize_Result
session.list client → server

Read a bounded daemon-ordered session-index page.

Params
Session_List_Params (optional)
Result
Session_List_Result
session.create client → server

Create a new session.

Params
Create_Session
Result
Session_Result
session.patch client → server

Patch session settings.

Params
Session_Patch_Params
Result
Session_Result
session.remove client → server

Remove a session and its data.

Params
Session_Remove_Params
Result
Empty
session.fork client → server

Fork a session from another session's transcript.

Params
Session_Fork_Params
Result
Session_Result
session.compact client → server

Request manual compaction of the transcript context.

Params
Session_Compact_Params
Result
Session_Compact_Result
session.rewind client → server

Truncate the transcript at a user message.

Params
Session_Rewind_Params
Result
Empty
session.send_input client → server

Send user input to a session.

Params
Session_Send_Input_Params
Result
Session_Send_Input_Result
session.cancel_input client → server

Cancel a queued input that has not started.

Params
Session_Cancel_Input_Params
Result
Session_Cancel_Input_Result
session.cancel_run client → server

Cancel the active run, optionally clearing queue and pending compaction.

Params
Session_Cancel_Run_Params
Result
Session_Cancel_Run_Result
session.resync client → server

Resync a session with a windowed transcript snapshot.

Params
Session_Resync_Params
Result
Session_Resync_Result
session.history client → server

Read older committed history beyond the resync window.

Params
Session_History_Params
Result
Session_History_Result
permission.decide client → server

Answer a pending permission request.

Params
Permission_Decide_Params
Result
Empty
session.config client → server

Fetch a session's run config and system prompt by config_rev.

Params
Session_Config_Params
Result
Session_Config_Result
subscription.set client → server

Replace the subscription set.

Params
Subscription_Set_Params
Result
Empty
catalog.list client → server

Fetch the model catalog, with optional since_rev.

Params
Catalog_List_Params (optional)
Result
Catalog_List_Result
catalog.refresh client → server

Re-read provider and credential configuration from disk.

Params
Empty (optional)
Result
Catalog_Refresh_Result
auth.list client → server

Read public authentication state and supported login mechanisms.

Params
Empty (optional)
Result
Auth_List_Result
auth.login client → server

Start a daemon-owned provider login attempt.

Params
Auth_Login_Params
Result
Auth_Login_Result
auth.cancel_login client → server

Cancel a daemon-owned provider login attempt.

Params
Auth_Cancel_Login_Params
Result
Empty
auth.logout client → server

Remove one provider's durable credentials.

Params
Auth_Logout_Params
Result
Empty
workspace.describe client → server

Describe an arbitrary path as a workspace.

Params
Workspace_Describe_Params
Result
Workspace_Describe_Result
workspace.browse client → server

List directories on the daemon host.

Params
Workspace_Browse_Params (optional)
Result
Workspace_Browse_Result
workspace.remove client → server

Remove a workspace and its sessions.

Params
Workspace_Ref
Result
Workspace_Remove_Result
workspace.skills client → server

List skills available in a workspace.

Params
Workspace_Ref
Result
Workspace_Skills_Result
permission.rules client → server

List remembered permission rules for a workspace.

Params
Workspace_Ref
Result
Permission_Rules_Result
permission.forget client → server

Forget a remembered permission rule.

Params
Permission_Forget_Params
Result
Empty
cron.create client → server

Create a cron job.

Params
Cron_Create_Params
Result
Cron_Job_Result
cron.patch client → server

Patch a cron job.

Params
Cron_Patch_Params
Result
Cron_Job_Result
cron.remove client → server

Remove a cron job.

Params
Cron_Job_Ref
Result
Empty
cron.list client → server

List cron jobs.

Params
Cron_List_Params (optional)
Result
Cron_List_Result
cron.run_now client → server

Fire a cron job immediately.

Params
Cron_Job_Ref
Result
Cron_Run_Now_Result

Broadcasts

session.summary_changed server → client

Durable session summary changed.

Payload
Session_Summary_Changed_Data
session.activity_changed server → client

Volatile session activity changed.

Payload
Session_Activity_Changed_Data
session.removed server → client

Session was removed.

Payload
Session_Removed_Data
workspace.created server → client

Workspace became known to the daemon.

Payload
Workspace_Created_Data
workspace.removed server → client

Workspace was removed.

Payload
Workspace_Removed_Data
permission.rules_changed server → client

Permission rules for a workspace changed.

Payload
Permission_Rules_Changed_Data
catalog.changed server → client

Catalog content hash or health changed.

Payload
Catalog_Changed_Data
auth.login_finished server → client

A daemon-owned authentication login attempt reached a terminal outcome.

Payload
Auth_Login_Finished_Data
auth.changed server → client

Public authentication state for a provider changed.

Payload
Auth_Changed_Data
cron.created server → client

Cron job was created.

Payload
Cron_Created_Data
cron.updated server → client

Cron job was updated.

Payload
Cron_Updated_Data
cron.removed server → client

Cron job was removed.

Payload
Cron_Removed_Data
notice server → client

Daemon diagnostic notice.

Payload
Notice
message.committed server → client

Committed transcript message; durable.

Payload
Message_Committed_Data
run.started server → client

Run started; durable.

Payload
Run_Started_Data
run.done server → client

Run reached a terminal outcome; durable.

Payload
Run_Done_Data
config.changed server → client

Run config changed; durable.

Payload
Config_Changed_Data
transcript.truncated server → client

Transcript was truncated; durable.

Payload
Transcript_Truncated_Data
message.started server → client

Assistant message draft started.

Payload
Message_Started_Data
message.discarded server → client

Assistant message draft was discarded (e.g. retry).

Payload
Message_Discarded_Data
message.part_added server → client

A new part was appended to a draft.

Payload
Message_Part_Added_Data
message.part_delta server → client

Incremental text/reasoning bytes for a draft.

Payload
Message_Part_Delta_Data
tool.state_changed server → client

Tool part state changed.

Payload
Tool_State_Changed_Data
tool.output_delta server → client

Incremental display output for a running tool part.

Payload
Tool_Output_Delta_Data
input.queued server → client

Input was queued behind the active turn.

Payload
Input_Queued_Data
input.canceled server → client

Queued input was canceled before starting.

Payload
Input_Canceled_Data
session.deltas_shed server → client

Live deltas were shed to a lagging connection.

Payload
Session_Deltas_Shed_Data

Errors

Code Name Meaning
-32602 Bad_Request Request was syntactically or semantically invalid.
-32600 Bad_Protocol Wire-level framing / version violation.
-32601 Unknown_Method Unknown RPC method name.
-31000 Unknown_Session Session id does not exist.
-31001 Unknown_Workspace Workspace id does not exist.
-31002 Stale_Cursor A paged-query cursor names an invalidated result generation.
-31003 Unknown_Message Message id does not exist in this session.
-31004 Unknown_Part Part index is out of range for the parent message.
-31005 Unknown_Input Input id does not exist or was already consumed.
-31006 Unknown_Config_Rev config_rev is not the session's current revision.
-31007 Unknown_Job Job id does not exist.
-31008 Job_Busy A run is already active on the target job.
-31009 Unknown_Skill Skill name is unknown to this daemon.
-31010 Input_Already_Started Input was already started and cannot be re-entered.
-31011 Queue_Full Session input queue reached its protocol cap.
-31012 Run_Mismatch The run the request targets is not the current run.
-31013 Permission_Unknown Permission descriptor or prompt id is unknown.
-31014 Permission_Already_Decided Permission for this prompt was already decided.
-31015 Session_Busy Session is busy and cannot accept the request right now.
-31016 Session_Has_Children Session has persistent children and removal did not request a cascade.
-31017 Runtime_Failed Underlying runtime (model / tool) failed.
-31018 Invalid_Patch Patch failed structural or content validation.
-31019 Unsupported_Model Model id is not supported by this daemon.
-31020 Unsupported_Reasoning Reasoning effort is not supported by the selected model.
-32603 Internal Catch-all for unspecified internal errors.
-31021 Overloaded Retry this request after backoff; the connection stays up, only this request was shed. Client behavior: exponential-backoff re-send of the same request.

Types

Structures

Auth_Login_Summary

Public locator for one daemon-owned login attempt. It contains no OAuth secret.

login_id Login_Id required Daemon-minted login attempt id.
flow Auth_Flow required Mechanism used by the attempt.
Auth_Provider

Public authentication state and capabilities for one provider.

provider_id Provider_Id required Stable configuration identifier.
state Auth_State required Whether durable credentials are available.
login_flows []Auth_Flow required Login mechanisms currently supported by this provider.
pending_login Maybe(Auth_Login_Summary) requiredNullable Current daemon-owned attempt, if one is running.
Auth_Login_Params

Params for auth.login.

provider_id Provider_Id required Provider to authenticate.
flow Auth_Flow required Requested login mechanism.
Auth_Login_Result_Browser

Browser authorization details returned only to the requesting connection.

login_id Login_Id required Daemon-owned attempt id.
auth_url string required Authorization URL to open in a browser.
Auth_Login_Result_Device_Code

Device authorization details returned only to the requesting connection.

login_id Login_Id required Daemon-owned attempt id.
verification_url string required Page where the user enters user_code.
user_code string required Short-lived code entered by the user, not the provider's device machine code.
Auth_Cancel_Login_Params

Params for auth.cancel_login.

login_id Login_Id required Daemon-owned attempt to cancel.
Auth_Logout_Params

Params for auth.logout.

provider_id Provider_Id required Provider whose durable credentials are removed.
Auth_List_Result

Result of auth.list.

providers []Auth_Provider required Authentication-capable providers known to the daemon.
Auth_Login_Outcome_Succeeded

Login completed successfully and credentials were durably stored.

Auth_Login_Outcome_Canceled

Login was explicitly canceled.

Auth_Login_Outcome_Failed

Login failed without changing durable credentials.

message string required Human-readable failure detail with no credential material.
Auth_Login_Finished_Data

Payload for auth.login_finished.

login_id Login_Id required Completed daemon-owned attempt.
provider_id Provider_Id required Provider the attempt targeted.
outcome Auth_Login_Outcome required Terminal outcome.
Auth_Changed_Data

Payload for auth.changed.

provider Auth_Provider required Complete current public provider state.
Session_Summary_Changed_Data

Payload for session.summary_changed.

revision Session_Revision required Daemon-lifetime compact-index revision.
session Session required Current durable session summary.
Session_Activity_Changed_Data

Payload for session.activity_changed.

session_id Session_Id required Owning session id.
activity Session_Activity required Current coarse activity.
Session_Removed_Data

Payload for session.removed.

revision Session_Revision required Daemon-lifetime compact-index revision.
session_id Session_Id required Id of the removed session.
Workspace_Created_Data

Payload for workspace.created.

workspace Workspace required The newly known workspace.
Workspace_Removed_Data

Payload for workspace.removed.

workspace_id Workspace_Id required Id of the removed workspace.
Permission_Rules_Changed_Data

Payload for permission.rules_changed.

workspace_id Workspace_Id required Owning workspace id.
rules []Permission_Rule required Current rule set.
Catalog_Changed_Data

Payload for catalog.changed.

catalog_rev Catalog_Rev required New catalog content hash.
health Catalog_Health required Updated load health.
Cron_Created_Data

Payload for cron.created.

revision Cron_Revision required Daemon-lifetime cron-index revision.
job Cron_Job required The newly created job.
Cron_Updated_Data

Payload for cron.updated.

revision Cron_Revision required Daemon-lifetime cron-index revision.
job Cron_Job required Updated job record.
Cron_Removed_Data

Payload for cron.removed.

revision Cron_Revision required Daemon-lifetime cron-index revision.
job_id Job_Id required Id of the removed job.
Message_Committed_Data

Payload for message.committed.

session_id Session_Id required Owning session id.
seq Seq required Sequence number on the durable stream.
message Message required The committed message.
Run_Started_Data

Payload for run.started.

session_id Session_Id required Owning session id.
seq Seq required Sequence number on the durable stream.
run_id Run_Id required New run id.
kind Run_Kind required What kind of run started.
reason Maybe(Compaction_Reason) optional Why compaction is running; present exactly when kind is compaction. The durable log carries it so a resync can rebuild a compacting session.
config_rev Config_Rev required Config revision used by the run.
started_at_ms u64 required Start epoch ms.
Run_Done_Data

Payload for run.done. One terminal event for a run: outcome carries the terminal arm (turn, compacted, skipped, canceled, or failed) and timing covers every terminal, including a queued run canceled before it started.

session_id Session_Id required Owning session id.
seq Seq required Sequence number on the durable stream.
run_id Run_Id required Run id (terminal).
kind Run_Kind required What kind of run terminated.
timing Run_Canceled_Timing required Terminal timing; started_at_ms is null when canceled while queued.
outcome Run_Outcome required Terminal outcome.
Config_Changed_Data

Payload for config.changed.

session_id Session_Id required Owning session id.
seq Seq required Sequence number on the durable stream.
config Run_Config required New active run config.
Transcript_Truncated_Data

Payload for transcript.truncated.

session_id Session_Id required Owning session id.
seq Seq required Sequence number on the durable stream.
first_removed_id Message_Id required First removed message id.
Message_Started_Data

Payload for message.started (draft opened).

session_id Session_Id required Owning session id.
message_id Message_Id required Draft message id.
run_id Run_Id required Owning run id.
config_rev Config_Rev required Config revision used.
agent string required Agent name, e.g. "main".
created_at_ms u64 required Draft creation epoch ms.
Message_Discarded_Data

Payload for message.discarded.

session_id Session_Id required Owning session id.
message_id Message_Id required Discarded draft id.
Message_Part_Added_Data

Payload for message.part_added.

session_id Session_Id required Owning session id.
message_id Message_Id required Draft message id.
part Assistant_Part required Newly appended part.
Tool_State_Changed_Data

Payload for tool.state_changed.

session_id Session_Id required Owning session id.
message_id Message_Id required Draft message id.
part_id Part_Id required Tool part ordinal inside the message.
state Tool_State required New tool state.
permission_state Maybe(Permission_State) optional The part's permission lifecycle at this transition, under the same Tool_Part cross-field invariant. Replaces the part's copy wholesale.
Input_Queued_Data

Payload for input.queued.

session_id Session_Id required Owning session id.
input Queued_Input required The queued input.
Input_Canceled_Data

Payload for input.canceled.

session_id Session_Id required Owning session id.
input_id Input_Id required Id of the canceled input.
Session_Deltas_Shed_Data

Payload for session.deltas_shed: advisory notice that this connection's live deltas were shed under backpressure, so a client can tell that apart from a bug. Delivered per connection and itself sheddable — when it cannot be sent the delta offset gap remains the signal. Recovery is unchanged: resync.

session_id Session_Id required Owning session id.
count u64 required Deltas shed on this connection since the last delivered marker; never zero.
Model_Cost

United States dollars per million tokens.

input f64 required Cost per million input tokens.
output f64 required Cost per million output tokens.
cache_read f64 required Cost per million cache-read tokens.
cache_write f64 required Cost per million cache-write tokens.
Model_Info

Closed projection of a provider model record. Non-owning.

id Model_Id required Model identifier.
provider string required
name string required
context_window u64 required Max input tokens the model accepts.
max_output_tokens u64 required Max output tokens the model can produce.
reasoning_levels []string required Supported reasoning effort levels; each element @bounded 32.
default_reasoning string required
supports_vision bool required Whether the model accepts image input.
supports_tools bool required Whether the model supports tool calling.
cost Model_Cost required Per-token pricing.
Catalog_List_Params

Params for catalog.list.

since_rev Maybe(Catalog_Rev) optional Client's last known catalog revision; omit to force a full response.
Catalog_List_Result_Unchanged

Client's revision is current; no catalog data included.

catalog_rev Catalog_Rev required Current catalog revision.
Catalog_List_Result_Full

Client's revision was stale or absent; full catalog included.

catalog_rev Catalog_Rev required Current catalog revision.
models []Model_Info required All available models.
health Catalog_Health required Catalog load health.
Catalog_Refresh_Result

Result of catalog.refresh.

catalog_rev Catalog_Rev required New catalog revision after refresh.
health Catalog_Health required Catalog load health.
Catalog_Health

Catalog load health.

skipped []Skipped_Provider required Providers skipped by the daemon.
load_error Maybe(string) requiredNullable Catalog load failure, if any.
Skipped_Provider

Providers skipped during catalog load. Non-owning.

provider string required Provider name.
reason Skip_Reason required Why this provider was skipped.
Skip_Reason_Missing_Credential

Required credential was absent.

env string required Environment variable name.
Skip_Reason_Invalid_Config

Provider config was invalid.

message string required Human-readable error.
Error_Object

Request failure details. Non-owning.

code Error_Code required Machine-readable error category.
message string required Human-readable. Clients branch on code, never on this.
Media_Url

Fetched over HTTP by URL.

url string required Remote URL.
Media_Base64

Inlined as base64 bytes.

mime string required MIME type.
data string required Base64-encoded bytes. The decoded length is the tighter rule: <= LIMITS.max_inline_media_bytes.
Media_Blob

Referenced by content hash, fetched separately.

hash [64]u8 required Content hash, lowercase hex.
mime string required MIME type.
bytes u64 required Decoded byte length.
Content_Text

Plain UTF-8 text.

text string required UTF-8 text.
Content_Image

Image content.

source Media_Source required Image bytes.
detail Maybe(string) optional Optional detail hint (e.g. "low" / "high").
Content_Audio

Audio content.

source Media_Source required Audio bytes.
format string required Audio container format.
Content_File

Arbitrary file content.

source Media_Source required File bytes.
filename Maybe(string) optional Original filename.
Cron_Patch

Optional-field patch applied to an existing cron job.

name Maybe(string) optional New display name, if changing.
schedule Cron_Schedule required New fire schedule, if changing.
session Maybe(Create_Session) optional New session template, if changing.
retain Maybe(Cron_Retain) optional New retention policy, if changing.
input Input required New fire input, if changing.
on_missed Maybe(Cron_Missed_Policy) optional New missed-fire policy, if changing.
overlap Maybe(Cron_Overlap) optional New overlap policy, if changing.
delete_after_run Maybe(bool) optional New auto-delete-after-run flag, if changing.
enabled Maybe(bool) optional New enabled state, if changing.
Cron_Create_Params

Params for cron.create.

spec Cron_Job_Spec required Full spec for the new job.
Cron_Patch_Params

Params for cron.patch.

job_id Job_Id required Job to patch.
patch Cron_Patch required Fields to change.
Cron_Job_Ref

Params naming a cron job and nothing else. Shared by cron.remove and cron.run_now; split it the moment one of them needs a field of its own.

job_id Job_Id required Job the request targets.
Cron_List_Params

Params for cron.list.

limit Maybe(u64) optional Page size; omitted means daemon default.
cursor Maybe(string) optional Opaque continuation.
Cron_List_Result

Result of cron.list.

revision Cron_Revision required Cron-index revision represented by every job in this page.
jobs []Cron_Job required Jobs in daemon-defined stable order.
next_cursor Maybe(string) requiredNullable Opaque continuation; required null on the final page.
Cron_Run_Now_Result

Result of cron.run_now.

session_id Session_Id required Session created by the fire.
run_id Run_Id required Run started in that session.
Cron_Schedule_Every

interval_ms u64 required Interval in ms.
Cron_Schedule_Cron

expr string required Cron expression (UTC unless utc_offset_minutes overrides).
utc_offset_minutes i64 required Local-zone offset in minutes; 0 means UTC.
Cron_Schedule_At

at_ms u64 required Fire at this absolute epoch ms.
Cron_Schedule_After

delay_ms u64 required Delay in ms after the trigger.
Cron_Job_Spec

Full spec for a cron job.

name Maybe(string) optional Display name for the job.
schedule Cron_Schedule required When to fire.
session Create_Session required Session template applied to each fire.
retain Cron_Retain required Whether to retain fired sessions.
input Input required Input to deliver on each fire.
on_missed Cron_Missed_Policy required Policy when a fire is missed.
overlap Cron_Overlap required Policy when a new fire overlaps an active one.
delete_after_run bool required Auto-delete the job after a successful run.
Cron_Job

A cron job record. Non-owning.

id Job_Id required Job id.
spec Cron_Job_Spec required Job spec at last write.
enabled bool required Whether fires are active.
created_at_ms u64 required Creation epoch ms.
next_run_ms Maybe(u64) requiredNullable Next scheduled fire epoch ms; null when paused or done.
last_run_ms Maybe(u64) requiredNullable Last fire epoch ms; null when none yet.
last_session_id Maybe(Session_Id) requiredNullable Id of the session produced by the last fire.
last_outcome Maybe(Cron_Run_Outcome) requiredNullable Outcome of the last fire.
run_count u64 required Total successful fires since creation.
dispatch_failures u64 required Total dispatch failures since creation.
Request

Client request frame with typed method params.

id Request_Id required Correlation id, echoed verbatim in the response.
method Method_Name required RPC method name.
params Request_Params required Method params typed by method.
Response_Ok

Successful server response; carries the typed method result.

id Request_Id required Correlation id copied from the request.
result Response_Result required Method result, tagged by the request method that produced it.
Response_Error

Failed server response; carries a method-agnostic error object.

id Request_Id required Correlation id copied from the request.
error Error_Object required Request failure details.
Notification

Server-pushed notification: a request object with no id, so nothing replies. Ordering, replay, gating, and droppability are ours — see broadcast_name_class, Seq, and session.resync.

method Broadcast_Name required Broadcast name, occupying the same method namespace as requests.
params Broadcast_Data required Typed broadcast payload.
Client

Connection-level client identity.

name string required Client connection name (e.g. "yuke-tui").
version string required Client build/version string.
Initialize_Params

Params of the initialize request. Non-owning.

protocol u32 defaulted Protocol version this client speaks. Must equal PROTOCOL_VERSION.
client Client required Connection-level client identity.
Daemon_Info

Daemon identity and clock. Non-owning.

version string required Daemon build/version string.
server_now_ms u64 required Daemon wall-clock epoch ms at initialize time.
Initialize_Result

Result of the initialize request: the coarse daemon snapshot.

protocol u32 required Protocol version the daemon speaks.
daemon Daemon_Info required Daemon identity and clock.
workspaces []Workspace required Known workspaces.
profiles []string required Available profile names; each element @bounded 64.
agents []string required Available agent names; each element @bounded 64.
session_revision Session_Revision required Current compact session-index revision for this connection generation.
cron_revision Cron_Revision required Current cron-index revision for this connection generation.
catalog_rev Catalog_Rev required Catalog content hash.
catalog_health Catalog_Health required Catalog load health.
capabilities []Capability required Optional daemon surfaces this build/config advertises; see Capability.
Input_Content

Raw content parts.

content []Content_Part required Raw content parts.
Skill_Ref

A named skill invocation with its rendered arguments. Shared by Input_Skill and User_Message.skill.

name string required Skill name.
arguments string required Skill arguments.
Input_Skill

Skill invocation.

skill Skill_Ref required
Queued_Input

A queued input waiting behind an active turn.

input_id Input_Id required Daemon-minted input id.
content []Content_Part required Content parts awaiting execution.
queued_at_ms u64 required Enqueue time, epoch ms.
Session_Send_Input_Params

Params for session.send_input.

session_id Session_Id required Owning session.
input Input required Input to enqueue or start.
Session_Send_Input_Result_Started

Started immediately.

input_id Input_Id required Daemon-minted input id.
run_id Run_Id required Run started to handle this input.
Session_Send_Input_Result_Queued

Queued behind an active turn.

input_id Input_Id required Daemon-minted input id.
Session_Cancel_Input_Params

Params for session.cancel_input.

session_id Session_Id required Owning session.
input_id Input_Id required Input to cancel.
Session_Cancel_Input_Result

Result of session.cancel_input.

canceled_input Input_Id required Id of the canceled input.
Session_Cancel_Run_Params

Params for session.cancel_run.

session_id Session_Id required Owning session.
run_id Maybe(Run_Id) optional Specific run to cancel; omit to cancel the active run.
clear_queue Maybe(bool) optional Also drop any queued inputs.
Session_Cancel_Run_Result

Result of session.cancel_run.

canceled_run Maybe(Run_Id) requiredNullable Run that was canceled; null if none was active.
cleared_inputs []Input_Id required Queued inputs dropped by clear_queue.
cleared_compaction Maybe(Run_Id) requiredNullable Compaction run canceled alongside; null if none was active.
Part_Delta

Incremental text/reasoning bytes for a draft. offset is UTF-8 bytes already present: == len appends, < len is a no-op, > len is a gap (call session.resync).

session_id Session_Id required Owning session.
message_id Message_Id required Draft message id.
part_id Part_Id required Target part ordinal in content[].
delta string required UTF-8 bytes to fold at offset.
offset u64 required UTF-8 bytes already applied on the receiver.
Empty

Empty params/result object ({}) for methods whose registry entry uses {}. One type for both directions: an empty object carries no direction-specific meaning.

Session_Result

Result of session.create, session.fork, and session.patch. The returned session carries the resulting config_rev and permission mode.

session Session required Resulting session.
Session_Patch_Params

Params for session.patch.

session_id Session_Id required Session to patch.
patch Session_Patch required Patch to apply.
Session_Remove_Params

Params for session.remove.

session_id Session_Id required Session to remove.
cascade_children bool defaulted Recursively remove persistent child sessions.
Cron_Job_Result

Result of cron.create and cron.patch.

job Cron_Job required The cron job.
Notice

Daemon diagnostic notice broadcast to all connections. Non-owning.

level Notice_Level required Severity.
source string required Emitting subsystem.
message string required Human-readable detail.
Permission_Option

One option the daemon proposes for a permission request.

id string required Stable option key clients echo back.
kind Permission_Option_Kind required Pre-computed classification of this option.
label string required Human-readable label.
creates Maybe([]string) optional Rule shapes produced when chosen (for allow_always); each element @bounded 512.
Permission_Decision_User

Decided by a user selecting an option.

option_id string required Selected option id.
kind Permission_Option_Kind required Pre-computed classification of the option.
label string required Human-readable option label.
resolved_at_ms u64 required Decision epoch ms.
decided_by Client required Client that decided.
Permission_Decision_Rule

Decided by a matched persisted rule.

rule_id Rule_Id required Rule that matched.
label string required Rule label.
resolved_at_ms u64 required Decision epoch ms.
Permission_State

Local-only lifecycle data folded into tool state. Never a broadcast.

requested_at_ms u64 required When the daemon issued the prompt.
options Maybe([]Permission_Option) optional Options offered to the user. Absent for rule-resolved decisions; at most 32.
decision Maybe(Permission_Decision) optional Once resolved, the recorded decision.
Permission_Rule

A remembered "allow always" answer, scoped to a workspace.

id Rule_Id required Rule id.
session_id Maybe(Session_Id) optional If non-null, rule is scoped to one session.
tool string required Tool name this rule applies to.
label string required Human-readable rule label.
action Rule_Action required Allow or deny the matched call.
created_at_ms u64 required Creation epoch ms.
created_by Client required Client that created the rule.
Permission_Decide_Params

Params for permission.decide.

session_id Session_Id required Owning session.
message_id Message_Id required Message the permission prompt belongs to.
part_id Part_Id required Part the permission prompt belongs to.
option_id string required
message Maybe(string) optional Client-supplied reason, meaningful only when option_id resolves to a reject kind; the daemon routes it into Tool_State_Denied.reason.
Permission_Rules_Result

Result of permission.rules.

rules []Permission_Rule required Remembered rules for the requested workspace.
Permission_Forget_Params

Params for permission.forget.

workspace_id Workspace_Id required Workspace the rule belongs to.
rule_id Rule_Id required Rule to forget.
Run_Canceled_Timing

Cancellation timing; an accepted queued run may never start.

started_at_ms Maybe(u64) requiredNullable Start epoch ms, or null when canceled before starting.
ended_at_ms u64 required Cancellation epoch ms.
Token_Usage

Token accounting for one assistant message.

input u64 required Input tokens billed.
output u64 required Output tokens billed.
reasoning u64 required Output tokens used by reasoning.
cache_read u64 required Tokens read from prompt cache.
cache_write u64 required Tokens written to prompt cache.
Run_Outcome_Turn

A completed turn: it stopped for a stop reason after some round trips.

finish Stop_Reason required Why the turn stopped.
rounds u64 required Number of model/tool round trips used.
Run_Outcome_Compacted

A manual compaction that produced a summary.

message_id Message_Id required New compaction message id.
Run_Outcome_Skipped

A manual compaction that did nothing.

reason Compact_Skip_Reason required Why nothing was compacted.
Run_Outcome_Canceled

A run canceled by the user or daemon. Its timing rides the terminal envelope.

Run_Outcome_Failed

A run that failed after daemon retry policy was exhausted.

code Run_Error_Code required Failure category.
message string required Human-readable failure.
System_Prompt_Default

Request-time system prompt override; the default arm means the field was omitted.

System_Prompt_None

Field was explicitly null.

System_Prompt_Set

@unbounded Field carried an explicit value.

value string required
Max_Rounds_Default

Request-time max-rounds override; the default arm means the field was omitted.

Max_Rounds_Unlimited

Field was explicitly null.

Max_Rounds_Set

Field carried an explicit value.

value u64 required
Create_Session

session.create input. Non-owning.

workspace_path Maybe(string) optional Filesystem path; omitted resolves to the home directory.
profile Maybe(string) optional Profile name to resolve config from.
model Maybe(string) optional Model id override.
reasoning Maybe(string) optional Reasoning level override.
system_prompt System_Prompt_Override tristate Omitted = resolve from config. Explicit null = force no system prompt.
permission Maybe(Permission_Mode) optional Permission mode override.
max_rounds Max_Rounds_Override tristate Round-cap override.
Session_Patch

Missing field means no change. The system prompt is snapshotted at creation and is not patchable. Non-owning.

model Maybe(string) optional New model id.
reasoning Maybe(string) optional New reasoning level.
permission Maybe(Permission_Mode) optional New permission mode.
max_rounds Max_Rounds_Override tristate New round cap.
Session_Fork_Params

session.fork input.

session_id Session_Id required Session to fork.
before_message_id Maybe(Message_Id) optional Fork up to (exclusive); omit to fork the full transcript.
Session_Compact_Params

session.compact input.

session_id Session_Id required Session to compact.
Session_Compact_Result

session.compact result.

status Compact_Status required Whether compaction started or was queued.
run_id Run_Id required Id of the compaction run.
Session_Rewind_Params

session.rewind input.

session_id Session_Id required Session to rewind.
before_message_id Message_Id required Rewind up to (exclusive).
Session_Origin_Root

User-created root session.

Session_Origin_Child

Child of another session.

parent_id Session_Id required Parent session id.
parent_message_id Message_Id required Message in the parent's transcript carrying the spawning tool part.
parent_part_id Part_Id required Tool part within that message that spawned this session; together with parent_message_id stays correct when one message emits multiple spawn calls.
Session_Origin_Fork

Fork of another session.

source_id Session_Id required Source session id.
Session_Origin_Cron

Created by a cron job.

job_id Job_Id required Owning cron job id.
Session

Daemon-owned session summary.

id Session_Id required Session id.
workspace_id Workspace_Id required Owning workspace id.
profile string required Profile name.
model string required Future-run model id.
reasoning string required Future-run reasoning level.
config_rev Config_Rev required Future-run config revision.
permission Permission_Mode required Live permission mode.
max_rounds Maybe(u64) requiredNullable Live round cap; null means unlimited.
title string required Display title.
message_count u64 required Committed transcript message count.
created_at_ms u64 required Creation epoch ms. Never changes; updated_at_ms is never below it.
updated_at_ms u64 required Last update epoch ms.
created_by Maybe(Client) requiredNullable Client that created the session; null for daemon-created child/cron sessions.
origin Session_Origin required Session provenance.
agent Maybe(string) optional Agent name, when known; omitted if unassigned. Lets a client listing children name the agent without fetching a transcript.
Run_Config

Run settings captured at start.

config_rev Config_Rev required Config revision used by the run.
model string required Model id.
reasoning string required Reasoning level.
Session_Activity

Coarse live session state.

state Activity_State required Current activity state.
config Maybe(Run_Config) optional Config the named run is executing under. Present exactly when state names a run that has one; absent under idle and compacting.
queued u64 required Accepted inputs waiting to run. At most LIMITS.max_queued_inputs.
context_tokens u64 required Provider context token count.
pending_compaction Maybe(Run_Id) requiredNullable Pending manual compaction run id.
Session_List_Item

Full compact row returned by session.list and session-index broadcasts. Non-owning; nested slices share the containing frame arena.

session Session required Durable session summary.
activity Session_Activity required Current coarse activity; idle is explicit.
Session_Scope_All

No workspace restriction.

Session_Scope_Workspace

Sessions belonging to one exact workspace.

workspace_id Workspace_Id required Workspace to match.
Session_Population_Top_Level

User-facing conversations: root sessions and forks.

Session_Population_Children

Immediate persistent children of one session.

parent_id Session_Id required Parent session to match.
Session_Population_Job_Runs

Sessions created by one cron job.

job_id Job_Id required Cron job to match.
Session_Population_All

Every session regardless of origin.

Session_List_Params

session.list input. Non-owning.

scope Session_Scope defaulted Workspace scope; omitted means no workspace restriction.
population Session_Population defaulted Relationship population; omitted means user-facing top-level sessions.
view Session_View defaulted Membership and ordering; omitted means active_recent.
limit Maybe(u64) optional Page size; omitted means daemon default.
cursor Maybe(string) optional Opaque daemon-issued continuation.
Session_List_Result

One bounded session.list page. Non-owning.

revision Session_Revision required Compact-index revision represented by every field in this result.
items []Session_List_Item required Rows in final daemon-defined display order.
next_cursor Maybe(string) requiredNullable Opaque continuation; required null on the final page.
total u64 required Unique rows in the complete selected view before paging.
Activity_State_Idle

No active work.

Activity_State_Building

Runtime is being built as the first phase of a run.

run_id Run_Id required Active run id.
started_at_ms u64 required Run and build start epoch ms.
Activity_State_Running

Run is active.

run_id Run_Id required Active run id.
started_at_ms u64 required Run start epoch ms.
Activity_State_Reasoning

Model is producing reasoning.

run_id Run_Id required Active run id.
message_id Message_Id required Draft message id.
part_id Part_Id required Reasoning part id.
Activity_State_Waiting_Permission

Tool call awaits permission.

run_id Run_Id required Active run id.
message_id Message_Id required Message containing the tool.
part_id Part_Id required Tool part id.
tool_name string required Tool name.
requested_at_ms u64 required Request epoch ms.
Activity_State_Running_Tool

Tool call is running.

run_id Run_Id required Active run id.
message_id Message_Id required Message containing the tool.
part_id Part_Id required Tool part id.
tool_name string required Tool name.
started_at_ms u64 required Tool start epoch ms.
Activity_State_Retrying

Run is waiting to retry.

run_id Run_Id required Active run id.
attempt u64 required Current attempt number.
max_attempts u64 required Maximum attempts.
next_at_ms u64 required Next retry epoch ms.
code Run_Error_Code required Failure code.
message string required Human-readable failure.
Activity_State_Compacting

Compaction model call is active.

run_id Run_Id required Active run id.
reason Compaction_Reason required Why compaction is running.
started_at_ms u64 required Compaction start epoch ms.
Session_Resync_Params

session.resync input.

session_id Session_Id required Session to resync.
limit Maybe(u64) optional Max messages to return; omit for daemon default.
Active_Draft

In-flight assistant draft, resent on resync. Non-owning.

message Assistant_Message required Draft message so far.
Session_Resync_Result

Full session snapshot for reconnection. Non-owning. On one ordered connection, the successful response is the snapshot cut barrier: session broadcasts queued before it are represented by this result, and broadcasts queued after it are newer than the cut.

item Session_List_Item required Current compact session-index row at this snapshot cut.
base_seq Seq required Sequence number to resume the durable stream from.
highest_finalized_message_id Maybe(Message_Id) requiredNullable Highest message id already committed or discarded at the snapshot cut. Required on the wire; null when no message has finalized.
messages []Message required Recent transcript messages, oldest first in strict message-id order.
has_more bool required True exactly when item.session.message_count exceeds the number of returned messages.
configs []Run_Config required Unique configs resolving every assistant message in messages and active.
active Maybe(Active_Draft) optional In-flight draft, if any.
queued []Queued_Input required Inputs queued behind the active turn.
Session_History_Params

session.history input.

session_id Session_Id required Session to page through.
before_message_id Message_Id required Page ends before this message (exclusive).
limit Maybe(u64) optional Max messages to return; omit for daemon default.
Session_History_Result

session.history result.

session_id Session_Id required Session the page belongs to.
messages []Message required Page of transcript messages, oldest first in strict message-id order.
configs []Run_Config required Unique configs resolving every assistant message in messages.
has_more bool required Whether older messages exist beyond this page.
Session_Config_Params

session.config.get input.

session_id Session_Id required Session to read config for.
config_rev Maybe(Config_Rev) optional Specific revision to fetch; omit for the live config.
Session_Config_Result

session.config.get result.

config Run_Config required The requested run config.
system_prompt Maybe(string) requiredNullable null means no system prompt is sent to the model.
Subscription_Set_Params

session.subscription.set input.

sessions []Session_Id required Sessions to subscribe to; replaces the prior set.
Message_Time

Creation/completion timestamps on an assistant message.

created_at_ms u64 required Creation epoch ms.
completed_at_ms Maybe(u64) requiredNullable Completion epoch ms; null while still in flight.
Created_Time

Creation timestamp on a user or compaction message. These message kinds carry { created_at_ms } only — no completed_at_ms (that is assistant-only).

created_at_ms u64 required Creation epoch ms.
Message_Error

Structured error on an assistant message with finish: "error". Non-owning.

type string required Provider error category string.
message string required Human-readable error.
Text_Part

Text assistant part payload. Non-owning.

id Part_Id required Part ordinal in the message content array.
text string required UTF-8 text.
Reasoning_Part

Reasoning assistant part payload. Non-owning.

id Part_Id required Part ordinal in the message content array.
text string required UTF-8 reasoning trace.
signature string required Opaque provider data: Anthropic's extended-thinking block signature, delivered by signature_delta. Empty when the provider issued none. Persisted verbatim and replayed verbatim on the next request of a tool-use conversation; never interpreted. A part carrying one must never be collapsed or reordered by a normalization pass, even when text is empty: the signature covers the block at its position.
Redacted_Reasoning_Part

Opaque safety-redacted model reasoning payload. Non-owning.

id Part_Id required Part ordinal in the message content array.
data string required Opaque encrypted provider data. Persist and replay it verbatim at this position; never interpret, normalize, collapse, or reorder it.
Tool_Part

Tool assistant part payload. Non-owning.

id Part_Id required Part ordinal in the message content array.
call_id Maybe(string) optional Provider identity; never used to address the part.
name string required Tool name.
arguments string required Opaque JSON-encoded arguments.
input_view Maybe([]View) optional Display-only input views.
state Tool_State required Current tool state.
permission_state Maybe(Permission_State) optional Local permission lifecycle. Absent under pending; options-and-no-decision under waiting_permission; decided when present, except under canceled.
Tool_State_Pending

Not yet started.

Tool_State_Waiting_Permission

Awaiting a permission decision.

Tool_State_Running

Call is executing.

started_at_ms u64 required Run start epoch ms.
output Maybe(string) optional Accumulated display output streamed so far. Present in a resync snapshot of a running tool, absent in the live transition into running. Its UTF-8 byte length is the next tool.output_delta offset baseline.
Tool_State_Completed

Call finished successfully.

output string required Model-facing output text.
view Maybe([]View) optional Display-only rendering hints.
duration_ms u64 required Wall-clock duration in ms.
Tool_State_Error

Call failed.

message string required Model-facing error text.
view Maybe([]View) optional Display-only rendering hints.
duration_ms u64 required Wall-clock duration in ms.
Tool_State_Denied

Permission was denied.

reason string required Model-facing reason.
denied_by Denied_By required Who denied.
Tool_State_Canceled

Call was canceled.

duration_ms Maybe(u64) requiredNullable Null when the call never started running.
User_Message

User transcript message payload. Non-owning.

id Message_Id required Message id.
content []Content_Part required Content parts in rendered order.
input_id Input_Id required The accepted input this message came from (client- or daemon-minted).
skill Maybe(Skill_Ref) optional Skill this message's rendered body came from, if any.
time Created_Time required Creation timestamp.
Turn_Provenance

Which provider actually produced one assistant turn. Absent on a turn the daemon built before the field existed. Assistant_Message.config_rev records the configuration a turn was *requested* under and can be resolved away by a later config change; this records what answered, which is what makes provider-scoped opaque data (a reasoning part's signature) safe to replay: replay it only when the next request goes to the same protocol and model. Non-owning.

protocol Provider_Protocol required Protocol the turn was produced under.
model string required Model id that produced the turn, resolved at request time.
Assistant_Message

Assistant transcript message payload. Non-owning.

id Message_Id required Message id.
run_id Run_Id required Owning run id.
config_rev Config_Rev required Resolves to a model string via session.config or config.changed.
agent string required Agent name ("main" for a root session).
content []Assistant_Part required Assistant parts in append order.
finish Maybe(Stop_Reason) optional Present on every committed message; absent on a draft.
tokens Maybe(Token_Usage) optional Token accounting.
cost Maybe(f64) optional Estimated United States dollars.
time Message_Time required Creation/completion timestamps.
error Maybe(Message_Error) optional Present exactly when finish is "error".
provenance Maybe(Turn_Provenance) optional Provider that produced this turn; absent on turns older than the field.
Compaction_Message

Compaction transcript message payload. Non-owning.

id Message_Id required Message id.
run_id Run_Id required Owning run id.
reason Compaction_Reason required Why compaction ran.
summary string required Model-generated summary of the dropped range.
first_kept_id Maybe(Message_Id) requiredNullable First message id still in the provider context. Null means nothing was kept.
tokens_before u64 required Tokens before compaction.
tokens_after u64 required Tokens after compaction.
time Created_Time required Creation timestamp.
Diff_Hunk

One hunk of a unified diff.

old_start u64 required 1-based start line in old file.
old_lines u64 required Line count in old file.
new_start u64 required 1-based start line in new file.
new_lines u64 required Line count in new file.
lines []string required Hunk body, one line per element (no trailing newlines). Owner: caller/arena.
Diff_File

One file in a diff view.

path string required New (or current) file path.
old_path Maybe(string) optional Path in the old tree when the file was renamed.
hunks []Diff_Hunk required Per-file hunks in file order. Owner: caller/arena.
View_Text

Plain text view.

text string required UTF-8 body.
language Maybe(string) optional Optional language hint.
View_Markdown

Markdown view.

text string required Markdown source.
View_Json

JSON view.

text string required JSON source.
View_Diff

Unified diff view.

files []Diff_File required Files in the diff. Owner: caller/arena.
View_Image

Image view.

source Media_Source required Image bytes.
alt Maybe(string) optional Alternative text.
Workspace

Daemon-known workspace directory. Non-owning.

id Workspace_Id required Derived workspace id.
root string required Canonical absolute path.
title string required Display title.
Git_Info

Git status for a workspace root, when it is a repo. Non-owning.

branch string required
dirty bool required Whether the working tree has uncommitted changes.
Workspace_Describe_Params

workspace.describe input. Non-owning.

path string required
Workspace_Describe_Result

workspace.describe result. Non-owning.

workspace Workspace required Resolved workspace.
git Maybe(Git_Info) requiredNullable Git status; null when the root is not a repo.
last_modified_ms u64 required Last filesystem modification epoch ms.
last_used_model Maybe(string) requiredNullable Last model used in this workspace; null if never run.
Workspace_Browse_Params

workspace.browse input. Non-owning.

path Maybe(string) optional
limit Maybe(u64) optional Page size; omitted means daemon default.
cursor Maybe(string) optional Opaque continuation within the same directory.
Dir_Entry

A single filesystem entry in a browse listing. Non-owning.

name string required
path string required
is_git_repo bool required Whether this directory is itself a git repo.
Workspace_Browse_Result

workspace.browse result. Non-owning.

path string required
parent Maybe(string) requiredNullable Parent directory path; null at the filesystem root.
entries []Dir_Entry required Directory contents.
next_cursor Maybe(string) requiredNullable Opaque continuation; required null on the final page.
Workspace_Ref

Params naming a workspace and nothing else. Shared by workspace.remove, workspace.skills, and permission.rules; split it the moment one of them needs a field of its own.

workspace_id Workspace_Id required Workspace the request targets.
Workspace_Remove_Result

workspace.remove result. Non-owning.

related_job_ids []Job_Id required Cron jobs that referenced the removed workspace.
Skill_Info

Discovered skill metadata. Non-owning.

name string required
description string required
scope Skill_Scope required Project- or personal-scoped.
argument_hint string required
Workspace_Skills_Result

workspace.skills.list result. Non-owning.

skills []Skill_Info required Discovered skills.

Unions

Auth_Login_Result

Result of auth.login, tagged by the mechanism actually started.

Auth_Login_Result_BrowserAuth_Login_Result_Device_Code

Auth_Login_Outcome

Terminal outcome for a daemon-owned login attempt.

Auth_Login_Outcome_SucceededAuth_Login_Outcome_CanceledAuth_Login_Outcome_Failed

Catalog_List_Result

Result of catalog.list: unchanged since since_rev, or a full catalog snapshot.

Catalog_List_Result_UnchangedCatalog_List_Result_Full

Skip_Reason

Reason a provider was skipped.

Skip_Reason_Missing_CredentialSkip_Reason_Invalid_Config

Media_Source

Where media bytes live. Inline (base64) capped at LIMITS.max_inline_media_bytes; blob is a content hash fetched over HTTP.

Media_UrlMedia_Base64Media_Blob

Content_Part

One piece of user or model content. Non-owning.

Content_TextContent_ImageContent_AudioContent_File

Cron_Schedule

A cron schedule: recurring or one-shot. Non-owning.

Cron_Schedule_EveryCron_Schedule_CronCron_Schedule_AtCron_Schedule_After

Response

Server response frame. One frame shape carrying exactly one of result / error; the outcome is which member is present.

Response_OkResponse_Error

Input

A unit of user input: either raw content or a skill invocation. Non-owning.

Input_ContentInput_Skill

Session_Send_Input_Result

Result of session.send_input: started immediately or queued behind an active turn.

Session_Send_Input_Result_StartedSession_Send_Input_Result_Queued

Permission_Decision

Who answered a permission request, and how. Non-owning.

Permission_Decision_UserPermission_Decision_Rule

Run_Outcome

A run's terminal outcome, discriminated by type. Cancellation and failure are terminal outcomes here (folded in from the former run.canceled / run.failed).

Run_Outcome_TurnRun_Outcome_CompactedRun_Outcome_SkippedRun_Outcome_CanceledRun_Outcome_Failed

System_Prompt_Override

Request-time system prompt override. default means the field was omitted.

System_Prompt_DefaultSystem_Prompt_NoneSystem_Prompt_Set

Max_Rounds_Override

Request-time max-rounds override. default means the field was omitted.

Max_Rounds_DefaultMax_Rounds_UnlimitedMax_Rounds_Set

Session_Scope

Workspace scope searched by session.list.

Session_Scope_AllSession_Scope_Workspace

Session_Population

Session relationship population searched by session.list.

Session_Population_Top_LevelSession_Population_ChildrenSession_Population_Job_RunsSession_Population_All

Activity_State

Session activity variant. The message_id, part_id, and tool_name locators are deliberately derivable: they are a checksum, and disagreement is a client's cue to resync.

Activity_State_IdleActivity_State_BuildingActivity_State_RunningActivity_State_ReasoningActivity_State_Waiting_PermissionActivity_State_Running_ToolActivity_State_RetryingActivity_State_Compacting

Assistant_Part

One element of an assistant message content[]. Non-owning.

Text_PartReasoning_PartRedacted_Reasoning_PartTool_Part

Message

A transcript message. Non-owning.

User_MessageAssistant_MessageCompaction_Message

View

Display-only rendering hint. Frontends may render natively or ignore. Non-owning.

View_TextView_MarkdownView_JsonView_DiffView_Image

Enumerations

Auth_Flow

OAuth login mechanisms a provider exposes.

browser Authorization-code login using a loopback browser callback.
device_code Device authorization login using a verification page and user code.
Auth_State

Coarse persisted authentication state for a provider.

signed_out No durable credentials are available.
signed_in Durable credentials are available.
Broadcast_Name

Closed enum of broadcast names. Source of truth for the broadcast set.

session.summary_changed Durable session summary changed.
session.activity_changed Volatile session activity changed.
session.removed Session was removed.
workspace.created Workspace became known to the daemon.
workspace.removed Workspace was removed.
permission.rules_changed Permission rules for a workspace changed.
catalog.changed Catalog content hash or health changed.
auth.login_finished A daemon-owned authentication login attempt reached a terminal outcome.
auth.changed Public authentication state for a provider changed.
cron.created Cron job was created.
cron.updated Cron job was updated.
cron.removed Cron job was removed.
notice Daemon diagnostic notice.
message.committed Committed transcript message; durable.
run.started Run started; durable.
run.done Run reached a terminal outcome; durable.
config.changed Run config changed; durable.
transcript.truncated Transcript was truncated; durable.
message.started Assistant message draft started.
message.discarded Assistant message draft was discarded (e.g. retry).
message.part_added A new part was appended to a draft.
message.part_delta Incremental text/reasoning bytes for a draft.
tool.state_changed Tool part state changed.
tool.output_delta Incremental display output for a running tool part.
input.queued Input was queued behind the active turn.
input.canceled Queued input was canceled before starting.
session.deltas_shed Live deltas were shed to a lagging connection.
Error_Code

Why a request failed. Distinct from run failures (RunErrorCode).

-32602 Request was syntactically or semantically invalid.
-32600 Wire-level framing / version violation.
-32601 Unknown RPC method name.
-31000 Session id does not exist.
-31001 Workspace id does not exist.
-31002 A paged-query cursor names an invalidated result generation.
-31003 Message id does not exist in this session.
-31004 Part index is out of range for the parent message.
-31005 Input id does not exist or was already consumed.
-31006 config_rev is not the session's current revision.
-31007 Job id does not exist.
-31008 A run is already active on the target job.
-31009 Skill name is unknown to this daemon.
-31010 Input was already started and cannot be re-entered.
-31011 Session input queue reached its protocol cap.
-31012 The run the request targets is not the current run.
-31013 Permission descriptor or prompt id is unknown.
-31014 Permission for this prompt was already decided.
-31015 Session is busy and cannot accept the request right now.
-31016 Session has persistent children and removal did not request a cascade.
-31017 Underlying runtime (model / tool) failed.
-31018 Patch failed structural or content validation.
-31019 Model id is not supported by this daemon.
-31020 Reasoning effort is not supported by the selected model.
-32603 Catch-all for unspecified internal errors.
-31021 Retry this request after backoff; the connection stays up, only this request was shed. Client behavior: exponential-backoff re-send of the same request.
Run_Error_Code

Why a run failed after daemon retry policy was exhausted.

provider Provider rejected or failed the request.
protocol Provider stream could not be parsed.
network Network request failed.
timeout Provider request timed out.
rate_limited Provider rate limit was hit.
quota_exhausted Plan, quota, or budget exhausted.
auth Provider authentication failed.
unknown_model Model id is unknown.
unsupported_reasoning Reasoning setting is unsupported.
max_rounds Tool-call round cap was hit.
context_overflow Conversation did not fit.
runtime Runtime environment failed.
internal Unspecified daemon failure.
Cron_Retain

Whether a fired session should be retained after the run ends.

always Always keep.
on_failure Keep only if the run failed.
never Always prune after the run.
Cron_Overlap

Behavior when a new fire overlaps an active run.

skip Skip the new fire.
parallel Run them in parallel.
Cron_Missed_Policy

What to do with a fire missed while offline / behind.

skip Drop missed fires.
run_once Run once immediately on recovery, then resume the schedule.
Cron_Run_Outcome

Outcome tag for a single cron fire.

completed Run finished normally.
canceled Run was canceled mid-flight.
failed Run returned an error.
dispatch_failed Daemon could not dispatch the fire (e.g. workspace busy).
Capability

Optional daemon surface a client may probe for. This is the ONE enum decoded tolerantly: an unknown capability string is IGNORED, never a Validation_Error. Tolerant decode is the whole point — a newer daemon advertises a token an older client does not know, and the client must skip it, not reject the frame. Every other enum in this package hard-rejects an unknown value; this one must not.

blob_upload Client→daemon blob upload (PUT /blob/<hash>).
Method_Name

Closed enum of RPC method names. Source of truth for the method set.

initialize Negotiate the protocol version and exchange identity. Must be the first request on a connection, and is the only one accepted before Ready.
session.list Read a bounded daemon-ordered session-index page.
session.create Create a new session.
session.patch Patch session settings.
session.remove Remove a session and its data.
session.fork Fork a session from another session's transcript.
session.compact Request manual compaction of the transcript context.
session.rewind Truncate the transcript at a user message.
session.send_input Send user input to a session.
session.cancel_input Cancel a queued input that has not started.
session.cancel_run Cancel the active run, optionally clearing queue and pending compaction.
session.resync Resync a session with a windowed transcript snapshot.
session.history Read older committed history beyond the resync window.
permission.decide Answer a pending permission request.
session.config Fetch a session's run config and system prompt by config_rev.
subscription.set Replace the subscription set.
catalog.list Fetch the model catalog, with optional since_rev.
catalog.refresh Re-read provider and credential configuration from disk.
auth.list Read public authentication state and supported login mechanisms.
auth.login Start a daemon-owned provider login attempt.
auth.cancel_login Cancel a daemon-owned provider login attempt.
auth.logout Remove one provider's durable credentials.
workspace.describe Describe an arbitrary path as a workspace.
workspace.browse List directories on the daemon host.
workspace.remove Remove a workspace and its sessions.
workspace.skills List skills available in a workspace.
permission.rules List remembered permission rules for a workspace.
permission.forget Forget a remembered permission rule.
cron.create Create a cron job.
cron.patch Patch a cron job.
cron.remove Remove a cron job.
cron.list List cron jobs.
cron.run_now Fire a cron job immediately.
Notice_Level

Severity of a daemon diagnostic notice.

info Informational.
warn Warning; recoverable.
error Daemon-side error.
Permission_Option_Kind

Kinds of options the daemon may propose on a permission prompt.

allow_once Allow once for this call only.
allow_session Allow for the rest of the session.
allow_always Persist as a workspace rule and allow.
reject_once Reject this call only.
reject_always Persist a deny rule and reject; its creates patterns produce deny rules (mirror of Allow_Always).
Denied_By

Who or what denied a tool call.

user A user selected a reject option.
policy Daemon policy rejected the call without prompting.
Rule_Action

Whether a remembered permission rule allows or denies the matched call.

allow Rule allows the matched call.
deny Rule denies the matched call.
Run_Kind

What kind of run occupies a session.

turn User-driven round of model + tool calls.
compaction Background context compaction.
Compact_Skip_Reason

Why a manual compaction did nothing.

nothing_to_summarize Transcript already fits the context.
too_few_messages Too few messages to summarize meaningfully.
Stop_Reason

Why a message stopped.

stop Natural stop.
length Hit the model's max-output token limit.
content_filter Provider content filter triggered.
tool_calls Stopped to run one or more tool calls.
canceled User or daemon canceled.
error Provider or runtime error.
unknown Stop reason did not map to a known value.
Compact_Status

Whether compaction started immediately or was queued.

started
queued
Permission_Mode

Permission policy for future tool calls.

strict Ask before sensitive actions.
normal Use daemon defaults.
yolo Allow without prompting.
Session_View

Closed daemon-defined session-list ordering.

active
recent
active_recent
Compaction_Reason

Why compaction is running.

auto Daemon-triggered compaction.
manual User-requested compaction.
Provider_Protocol

Provider request/response protocol a turn was produced under. Closed set; the transport picks a decoder from it, and persisted provenance names it so a later replay can tell whether opaque provider data still applies.

anthropic-messages Anthropic Messages.
openai-completions OpenAI Chat Completions.
openai-responses OpenAI Responses.
Skill_Scope

Where a skill definition was loaded from.

project
personal

Aliases

Provider_Id = string

Stable provider identifier used by auth and catalog configuration.

Message_Part_Delta_Data = Part_Delta

Payload for message.part_delta: incremental draft bytes folded by UTF-8 offset.

Tool_Output_Delta_Data = Part_Delta

Payload for tool.output_delta: incremental display output for a running tool part, offset-folded like message.part_delta but targeting the tool output stream.

Catalog_Rev = [64]u8

Catalog content hash.

Model_Id = string

Provider model identifier string.

Session_Id = [16]u8

16 lowercase hex chars. Doubles as an on-disk directory name.

Workspace_Id = [16]u8

16 lowercase hex chars. Doubles as an on-disk directory name.

Job_Id = [16]u8

16 lowercase hex chars. Doubles as an on-disk record name.

Rule_Id = [16]u8

16 lowercase hex chars. Identifies one remembered permission rule.

Login_Id = [32]u8

32 lowercase hex chars. Identifies one daemon-owned OAuth login attempt.

Request_Id = string

Correlation id as its verbatim JSON token — 7, "abc" with quotes, or null. Opaque: JSON-RPC requires the response id to equal the request id.

Message_Id = u64

Session-scoped, daemon-minted, strictly increasing, never reused.

Run_Id = u64

Session-scoped, daemon-minted, strictly increasing, never reused.

Input_Id = u64

Session-scoped, daemon-minted, strictly increasing, never reused.

Part_Id = u64

Part ordinal in message.content[], from 0. JSON number on the wire, like the other session-scoped ids.

Seq = u64

Per-session monotonic sequence number on durable broadcasts.

Session_Revision = u64

Monotonic compact-session-index revision within one daemon lifetime.

Cron_Revision = u64

Monotonic cron-index revision within one daemon lifetime.

Config_Rev = u64

Monotonic run-config revision within a session.

Limits

dead_connection_ms 90,000
default_cron_list_page_size 25
default_page_size 50
default_session_list_page_size 25
default_workspace_browse_page_size 100
max_activity_retry_message_bytes 1,024
max_agents 256
max_auth_flows 8
max_auth_providers 64
max_auth_url_bytes 4,096
max_auth_user_code_bytes 128
max_blob_bytes 67,108,864
max_catalog_models 4,096
max_cron_jobs 1,024
max_cron_list_cursor_bytes 256
max_cron_list_page_size 100
max_error_message_bytes 4,096
max_frame_bytes 8,388,608
max_inline_media_base64_bytes 349,528
max_inline_media_bytes 262,144
max_input_parts 256
max_message_parts 1,024
max_message_string_bytes 1,048,576
max_page_size 500
max_permission_creates 32
max_permission_options 32
max_permission_reject_message_bytes 4,096
max_permission_rules 4,096
max_profiles 256
max_queued_inputs 128
max_reasoning_levels 32
max_session_list_cursor_bytes 256
max_session_list_page_size 100
max_skills 1,024
max_skipped_providers 256
max_snapshot_configs 501
max_subscriptions 64
max_tool_output_stream_bytes 1,048,576
max_view_bytes 1,048,576
max_view_items 1,024
max_views_per_tool 64
max_workspace_browse_cursor_bytes 256
max_workspace_browse_page_size 500
max_workspaces 1,024
ping_interval_ms 30,000