← Schema index / Config Reference

webhooks schema

Canonical generated docsThis section is generated from caco config schema --json. The table below preserves the runtime field path, type, required/default markers, and canonical description for every value in this slice.

Top-level webhook ingress. External HTTP callers POST /hooks/global/<hook-id> -> bead/bash/action/agent handler; node-filtered, token-authed, optionally Tailscale-Funnel-exposed.

Field pathTypeRequiredDefaultCanonical description
webhookssectionoptionalTop-level webhook ingress. External HTTP callers POST /hooks/global/<hook-id> -> bead/bash/action/agent handler; node-filtered, token-authed, optionally Tailscale-Funnel-exposed.
└ webhooks.enabledbooloptionalWhether hook ingress is enabled (default true when entries present).
└ webhooks.tokenstringoptionalGlobal bearer token (inline) accepted for any hook in this section. Mutually exclusive with token_env/token_file.
└ webhooks.token_envstringoptionalSection bearer token read from this env var at auth time (rotation-robust). Mutually exclusive with token/token_file.
└ webhooks.token_filestringoptionalSection bearer token read from this file at auth time, tilde-expanded (rotation-robust). Mutually exclusive with token/token_env.
└ webhooks.nodeslist[string]optionalDefault node filter: which daemons serve/funnel this section's hooks.
└ webhooks.bind_hoststringoptionalWebhook listener bind host (default 127.0.0.1).
└ webhooks.bind_portintoptionalDedicated webhook listener port (the Tailscale Funnel target).
└ webhooks.funnelbooloptionalOpt-in Tailscale Funnel exposure on the filtered nodes (default false).
└ webhooks.max_body_bytesintoptionalMaximum request body size in bytes (default 1 MiB).
└ webhooks.entriesmap[string, map]optionalHooks keyed by <hook-id> (the URL path segment).
└ webhooks.entries.<hook-id>mapoptionalA single webhook served at /hooks/<scope>/<hook-id>.
└ webhooks.entries.<hook-id>.typestringrequiredHandler type: bead | bash | action | agent.
└ webhooks.entries.<hook-id>.tokenstringoptionalPer-hook bearer token (inline; accepted in addition to the section token). Mutually exclusive with token_env/token_file.
└ webhooks.entries.<hook-id>.token_envstringoptionalPer-hook bearer token read from this env var at auth time (rotation-robust). Mutually exclusive with token/token_file.
└ webhooks.entries.<hook-id>.token_filestringoptionalPer-hook bearer token read from this file at auth time, tilde-expanded (rotation-robust). Mutually exclusive with token/token_env.
└ webhooks.entries.<hook-id>.nodeslist[string]optionalPer-hook node filter (overrides the section nodes).
└ webhooks.entries.<hook-id>.descriptionstringoptionalHuman-readable description.
└ webhooks.entries.<hook-id>.commandstringoptionaltype=bash: shell command (sh -c) with the body in $CACO_HOOK_BODY.
└ webhooks.entries.<hook-id>.actionstringoptionaltype=action: name of a configured action to run.
└ webhooks.entries.<hook-id>.profilestringoptionaltype=agent: profile of the bead-creator agent to dispatch.
└ webhooks.entries.<hook-id>.beadmapoptionaltype=bead: defaults applied to the created bead.
└ webhooks.entries.<hook-id>.bead.projectstringoptionalTarget project for the created bead (defaults to the hook scope project).
└ webhooks.entries.<hook-id>.bead.titlestringoptionalLiteral bead title.
└ webhooks.entries.<hook-id>.bead.title_prefixstringoptionalPrefix prepended to the resolved title.
└ webhooks.entries.<hook-id>.bead.title_fromstringoptionalTop-level JSON body field to take the title from.
└ webhooks.entries.<hook-id>.bead.labelslist[string]optionalLabels applied to the created bead.
└ webhooks.entries.<hook-id>.bead.typestringoptionalBead type (task/bug/feature/epic). Defaults to task.
└ webhooks.entries.<hook-id>.bead.priorityintoptionalBead priority 0-4.
└ webhooks.entries.<hook-id>.timeout_secsintoptionalHandler timeout in seconds (bash/action). Default 300.