Skip to main content

On conversation update

POST /api/v1/webhooks/conversations

Webhook callback for when a conversation starts, pauses, resumes, or deletes. The ConversationInfo.agent field is an AgentBase discriminated union so both Faheem Code (Agent) and ACP (ACPAgent) payloads are accepted on this single endpoint.

Request body

FieldTypeRequiredDescription
idstringyesUnique conversation ID
workspaceBaseWorkspaceyesWorkspace used by the agent to execute commands and read/write files. Not the process working directory.
persistence_dir`stringnull`no
max_iterationsintegernoMaximum number of iterations the agent can perform in a single run.
stuck_detectionbooleannoWhether to enable stuck detection for the agent.
execution_statusConversationExecutionStatusno
confirmation_policyConfirmationPolicyBaseno
security_analyzer`SecurityAnalyzerBasenull`no
activated_knowledge_skillsstring[]noList of activated knowledge skills name
invoked_skillsstring[]noNames of progressive-disclosure skills explicitly invoked via the invoke_skill tool.
blocked_actionsobjectnoActions blocked by PreToolUse hooks, keyed by action ID
blocked_messagesobjectnoMessages blocked by UserPromptSubmit hooks, keyed by message ID
last_user_message_id`stringnull`no
leaf_event_id`stringnull`no
statsConversationStatsnoConversation statistics for tracking LLM metrics
secret_registrySecretRegistrynoRegistry for handling secrets and sensitive data
agent_stateobjectnoDictionary for agent-specific runtime state that persists across iterations.
hook_config`HookConfig-Inputnull`no
title`stringnull`no
metrics`MetricsSnapshotnull`no
created_atstringno
updated_atstringno
forked_from_conversation_id`stringnull`no
forked_from_event_id`stringnull`no
parent_conversation_id`stringnull`no
sub_conversation_idsstring[]noIDs of conversations naming this one as their parent. Derived from the server catalog; empty on webhook payloads. Name mirrors the Cloud API field.
tagsobjectnoKey-value tags for the conversation. Keys must be lowercase alphanumeric. Values are arbitrary strings up to 256 characters.
current_model_id`stringnull`no
available_modelsACPModelInfo[]noModels the ACP server offers for this session, lifted off ACPAgent.available_models (the models.availableModels field on the ACP session response). Each entry carries a model_id plus an optional name/description. Surfaced verbatim so clients can render a model picker and resolve current_model_id to a display label themselves — the server does no name curation. Empty for ACP servers that don't surface the (UNSTABLE) capability and for native Faheem Code agents. Client contract: current_model_id is NOT guaranteed to be a member — a forced acp_model override may name a model absent from the list — so treat a miss as 'show the raw id'. Some entries are opaque aliases whose human identity lives in description (e.g. claude-agent-acp's "default" -> "Opus 4.7 with 1M context · ...").
supports_runtime_model_switchbooleannoWhether a live, mid-conversation model switch will be attempted for this conversation — tells the inline picker whether to offer a live-switch control. Mirrors the SDK's switch gate: True for known switch-capable providers; False for unknown/custom ACP servers because their generic config writes are not guaranteed live-switch primitives. False for native Faheem Code agents, for a known provider that declares no support, and before the conversation has started a session.
launched_agent_profile`LaunchedAgentProfilenull`no
agentAgentBaseyesThe agent running in the conversation.
client_toolsClientToolSpec[]noClient-defined tool specs registered for this conversation. Surfaced so that a client re-attaching by conversation id can register the dynamic ClientAction_* action types before syncing persisted events, avoiding 'Unknown kind' deserialization errors.

Responses

StatusDescription
200Successful Response
422Validation Error

Response body

FieldTypeRequiredDescription
successbooleanno

Operation ID: on_conversation_update_api_v1_webhooks_conversations_post