Hooks
3 methods on the Hooks resource.
3 methods · 0 available to app tokens36 pages in SDK Reference
import { Compozy } from "@compozy/client";3 of 3
getHookCatalog
List the resolved hook catalog
compozy.hooks.getHookCatalog({ query }) → Promise<HookCatalogResponse>
Options
- workspacestringquery
- Workspace id or path
- agentstringquery
- Agent name
- event"agent.instance.created" | "agent.instance.paused" | "agent.instance.resumed" | "agent.instance.archived" | "agent.instance.adopted" | "subagent.settled" | "session.pre_create" | "session.post_create" | "session.pre_resume" | "session.post_resume" | "session.pre_stop" | "session.post_stop" | "session.message_persisted" | "session.runtime_recovery.started" | "session.runtime_recovery.succeeded" | "session.runtime_recovery.exhausted" | "input.pre_submit" | "prompt.post_assemble" | "event.pre_record" | "event.post_record" | "automation.job.pre_fire" | "automation.job.post_fire" | "automation.trigger.pre_fire" | "automation.trigger.post_fire" | "automation.run.completed" | "automation.run.failed" | "agent.pre_start" | "agent.spawned" | "agent.crashed" | "agent.stopped" | "agent.soul.snapshot.resolved" | "agent.soul.mutation.after" | "agent.heartbeat.policy.resolved" | "agent.heartbeat.wake.before" | "agent.heartbeat.wake.after" | "session.health.update.after" | "turn.start" | "turn.end" | "message.start" | "message.delta" | "message.end" | "tool.pre_call" | "tool.post_call" | "tool.post_error" | "permission.request" | "permission.resolved" | "permission.denied" | "context.pre_compact" | "context.post_compact" | "coordinator.pre_spawn" | "coordinator.spawned" | "coordinator.decision" | "coordinator.stopped" | "coordinator.failed" | "task.blocked" | "task.unblocked" | "task.needs_attention" | "task.recovered" | "task.status_changed" | "task.run.enqueued" | "task.run.pre_claim" | "task.run.post_claim" | "task.run.lease_extended" | "task.run.lease_expired" | "task.run.lease_recovered" | "task.run.released" | "task.run.completed" | "task.run.failed" | "loop.started" | "loop.generation.pre" | "loop.generation.post" | "loop.gate.pre" | "loop.gate.post" | "loop.node.terminal" | "loop.terminal" | "spawn.pre_create" | "spawn.created" | "spawn.parent_stopped" | "spawn.ttl_expired" | "spawn.reaped" | "session.attention.changed" | "window_manager.layout.applied" | "window_manager.desktop.created" | "window_manager.desktop.deleted" | "window_manager.window.moved" | "window_manager.window.opened" | "window_manager.window.closed" | "window_manager.stack.grouped" | "window_manager.stack.ungrouped" | "window_manager.stack.activated" | "worktree.pre_create" | "worktree.pre_remove" | "worktree.created" | "worktree.adopted" | "worktree.removed" | "terminal.opened" | "terminal.closed" | "terminal.command_started" | "terminal.command_finished" | "terminal.input_requested" | "terminal.input_provided" | "terminal.recording_started" | "terminal.recording_stopped" | "terminal.subscriber_evicted" | "terminal.limit_rejected" | "agent.instance.proposal.picked"query
- Hook event name
- source"native" | "config" | "agent_definition" | "skill"query
- Hook source
- mode"sync" | "async"query
- Hook mode
GET /api/hooks/catalogapp tokens denied
example.ts
import { Compozy } from "@compozy/client"; const compozy = await Compozy.connect();const result = await compozy.hooks.getHookCatalog();getHookEvents
List supported hook taxonomy metadata
compozy.hooks.getHookEvents({ query }) → Promise<HookEventsResponse>
Options
- family"session" | "input" | "prompt" | "event" | "agent" | "turn" | "message" | "tool" | "permission" | "context" | "terminal"query
- Hook event family
- sync_onlybooleanquery
- Only return sync-eligible events
GET /api/hooks/eventsapp tokens denied
example.ts
import { Compozy } from "@compozy/client"; const compozy = await Compozy.connect();const result = await compozy.hooks.getHookEvents();getHookRuns
List hook run history for one session
compozy.hooks.getHookRuns({ path, query }) → Promise<HookRunsResponse>
Options
- workspace_idstringpathrequired
- Workspace id
- sessionstringqueryrequired
- Session id
- event"agent.instance.created" | "agent.instance.paused" | "agent.instance.resumed" | "agent.instance.archived" | "agent.instance.adopted" | "subagent.settled" | "session.pre_create" | "session.post_create" | "session.pre_resume" | "session.post_resume" | "session.pre_stop" | "session.post_stop" | "session.message_persisted" | "session.runtime_recovery.started" | "session.runtime_recovery.succeeded" | "session.runtime_recovery.exhausted" | "input.pre_submit" | "prompt.post_assemble" | "event.pre_record" | "event.post_record" | "automation.job.pre_fire" | "automation.job.post_fire" | "automation.trigger.pre_fire" | "automation.trigger.post_fire" | "automation.run.completed" | "automation.run.failed" | "agent.pre_start" | "agent.spawned" | "agent.crashed" | "agent.stopped" | "agent.soul.snapshot.resolved" | "agent.soul.mutation.after" | "agent.heartbeat.policy.resolved" | "agent.heartbeat.wake.before" | "agent.heartbeat.wake.after" | "session.health.update.after" | "turn.start" | "turn.end" | "message.start" | "message.delta" | "message.end" | "tool.pre_call" | "tool.post_call" | "tool.post_error" | "permission.request" | "permission.resolved" | "permission.denied" | "context.pre_compact" | "context.post_compact" | "coordinator.pre_spawn" | "coordinator.spawned" | "coordinator.decision" | "coordinator.stopped" | "coordinator.failed" | "task.blocked" | "task.unblocked" | "task.needs_attention" | "task.recovered" | "task.status_changed" | "task.run.enqueued" | "task.run.pre_claim" | "task.run.post_claim" | "task.run.lease_extended" | "task.run.lease_expired" | "task.run.lease_recovered" | "task.run.released" | "task.run.completed" | "task.run.failed" | "loop.started" | "loop.generation.pre" | "loop.generation.post" | "loop.gate.pre" | "loop.gate.post" | "loop.node.terminal" | "loop.terminal" | "spawn.pre_create" | "spawn.created" | "spawn.parent_stopped" | "spawn.ttl_expired" | "spawn.reaped" | "session.attention.changed" | "window_manager.layout.applied" | "window_manager.desktop.created" | "window_manager.desktop.deleted" | "window_manager.window.moved" | "window_manager.window.opened" | "window_manager.window.closed" | "window_manager.stack.grouped" | "window_manager.stack.ungrouped" | "window_manager.stack.activated" | "worktree.pre_create" | "worktree.pre_remove" | "worktree.created" | "worktree.adopted" | "worktree.removed" | "terminal.opened" | "terminal.closed" | "terminal.command_started" | "terminal.command_finished" | "terminal.input_requested" | "terminal.input_provided" | "terminal.recording_started" | "terminal.recording_stopped" | "terminal.subscriber_evicted" | "terminal.limit_rejected" | "agent.instance.proposal.picked"query
- Hook event name
- outcome"applied" | "denied" | "failed" | "skipped" | "dropped" | "rejected"query
- Hook execution outcome
- sincestringquery
- Only runs recorded since this timestamp
- lastintegerquery
- Maximum number of records to return
GET /api/workspaces/{workspace_id}/hooks/runsapp tokens denied
example.ts
import { Compozy } from "@compozy/client"; const compozy = await Compozy.connect();const result = await compozy.hooks.getHookRuns({ path: { "workspace_id": "workspace_id" }, query: { "session": "session" } });