Skip to main content

Hooks

Hooks are event-driven automation rules that react to system events and trigger actions — run an agent, fire an action block, or execute a shell command. They implement a simple when → then pattern: when this event happens, do this.

Open via: Agents dropdown → Hooks

Trigger events

CategoryEvents
FilefileCreated, fileUpdated, fileDeleted
GitgitCommit, gitPush
ThreadthreadCreated, threadCompleted
AgentagentStarted, agentCompleted

File triggers support glob patterns to match specific paths (e.g., src/**/*.ts). Git triggers support branch filters. Thread and agent triggers support filtering by creator (user / agent / any) and agent type (main / sub / any).

Actions

Action typeWhat happens
runAgentStarts an agent with an optional instruction
runActionBlockFires an action block as a side execution
runCommandExecutes a shell command
sendToGatewaySends an event to the routing gateway

Hook configuration

Hooks are stored as .hook files in .codebolt/hooks/. Each hook has a when block and a then block:

name: lint-on-save
description: Run linter whenever a TypeScript file is saved
enabled: true
version: 1.0.0
when:
type: fileUpdated
patterns:
- "src/**/*.ts"
then:
type: runActionBlock
actionBlockId: lint-changed-files
name: review-on-commit
description: Start a reviewer agent after every git commit
enabled: true
version: 1.0.0
when:
type: gitCommit
branches:
- main
- "release/*"
then:
type: runAgent
agentId: reviewer-agent
instruction: "Review the latest commit and flag any issues."
runInSameThread: false

Setting runInSameThread: true runs the triggered agent inside the same conversation thread as the event source — giving it full context of what was happening when the event fired.

The Hooks panel

The Hooks panel lists all configured hooks with:

  • Name and description
  • Trigger type (with icon for file / git / thread / agent category)
  • Action type
  • Enabled / disabled toggle
  • Last execution time and status (success / error / timeout)
  • Error message if the last run failed

Creating a hook

Click + New Hook. The create dialog guides you through:

  1. Choosing a trigger type
  2. Configuring patterns, branches, or filters for that trigger
  3. Choosing an action type
  4. Configuring the agent, action block, or command to run

Enabling and disabling

Toggle any hook on or off without deleting it. Disabled hooks are shown greyed out and will not fire.

Execution timeout

Hooks time out after 30 seconds by default. If a hook's action doesn't complete in time, the run is marked timeout and logged in the panel.

Common patterns

Auto-format on save

when: { type: fileUpdated, patterns: ["**/*.py"] }
then: { type: runCommand, command: "black ." }

Post-completion review

when: { type: agentCompleted, agentTypeFilter: main }
then: { type: runAgent, agentId: reviewer, runInSameThread: true }

Update docs on commit

when: { type: gitCommit }
then: { type: runAgent, agentId: doc-updater, instruction: "Update docs for the latest changes." }