bolt-pipeline-healer agent that does more than blindly fix every failure — it deduplicates against prior self-healing attempts and existing open PRs before opening a new one.
The result is an autopilot that opens a fix PR when one is genuinely needed and stays quiet when an earlier attempt is already waiting for review.
Before You StartIntegrationsThe following must already be connected in Paradime:
- Slack — Self-Healing posts and the agent’s progress run in the configured
slack_channel
What You’ll Build
By the end of this guide you’ll have:- A
bolt-pipeline-healerDinoAI agent YAML committed under.dinoai/agents/ - A Bolt schedule with
self_healing.enabled = truepointing at this agent - A safe-by-default autopilot that only opens a new PR when no prior PR already addresses the same error
What Happens When a Run Fails
Once Self-Healing is enabled on a Bolt schedule:Architecture Overview
1
Create the Agent YAML
Commit this file at
.dinoai/agents/bolt-pipeline-healer.yml:.dinoai/agents/bolt-pipeline-healer.yml
Tool allowlist is deliberately narrow. The agent has read access (
read_file, ripgrep_search, run_sql_query), Bolt observability (list_bolt_schedules, get_bolt_run_logs), PR awareness (list_pull_requests), and a terminal (run_terminal_command) to commit changes and open the PR. No post_slack_message is needed — Self-Healing already threads the agent into a Slack channel, and the agent’s stdout shows up there automatically.2
Enable Self-Healing on the Bolt schedule (UI)
In the Bolt schedule editor for the schedule you want to heal:
See Bolt → Self-Healing for the full UI walkthrough.
- Open the Self-Healing section.
- Toggle Enable Self-Healing.
- Pick the Slack channel the agent should run in — e.g.
#agent-demo. It must already be configured under Notification Settings on this schedule. - From the Agent Name dropdown, pick
bolt-pipeline-healer. The list is populated from.dinoai/agents/*.ymlon the schedule’s git branch — so make sure the YAML from Step 1 has been merged before configuring this. - Save the schedule.

3
Or: enable Self-Healing via YAML (schedules-as-code)
If you manage Bolt schedules as code, add the See the full schema at Schedules as Code → Configuration Reference → Self-Healing.
self_healing block to the schedule entry:paradime_schedules.yml
4
Watch the first heal in action
The next time the schedule fails:
- Open
#agent-demoin Slack and find the failure notification for the run. - Inside that thread you’ll see:
🦖 Self-healing enabled — starting healing session...- A series of agent messages showing the dedup check in action (current logs → prior sessions → open PRs)
- Either:
- A “fix already in progress” post linking the existing PR (when the dedup check trips), or
- A PR link to the freshly opened fix branch (when the failure is new)
- Review the PR, merge if you’re happy, then retry the Bolt run from the Run Details page.

How the dedup check works
The dedup check is what makes this agent safe to leave running unattended. It’s driven by three pieces of context the agent reasons over:
The agent stops with a Slack pointer instead of opening a duplicate PR if both conditions hold:
- The current error matches an error from a prior self-healing attempt.
- An open PR already exists referencing that error or the failing model.

Why the initial context matters. Paradime injects a “Prior self-healing attempts for this schedule” block into the agent’s prompt automatically when prior sessions exist for the same
schedule_name_uuid. This is what gives the agent recall across runs without needing its own memory tool.File Structure
Your repository should look like this after completing the setup:Related Docs
- Bolt → Self-Healing — enabling the feature on a schedule
- DinoAI → Self-Healing — what the agent receives and how the prior-attempts context is built
- DinoAI → Fix with DinoAI — the manual one-click equivalent
- Programmable Agents — Quick Start
- Programmable Agents — YAML Configuration
- Programmable Agents — Tools Reference
- Schedules as Code — Configuration Reference