Every run the agent made, on the record.
Heeler's agent upgrades dependencies, remediates code, clears guardrail findings, fixes its own failing CI, and answers when you ask it for a change on a pull request. Every one of those runs is recorded — the plan it followed, the tools it called, the files it changed, and where the pull request it opened now stands. Deterministic means reproducible, and reproducible means you can go and check.
What the audit trail gives you.
What a record of the agent's work gives you that a status page never could.
The full transcript
Open any run and read the plan it set out to follow, its reasoning step by step, the tools it called, and the diff of every file it touched. Copy the whole conversation as Markdown for a ticket or a review.
Where every pull request stands
Each run carries its pull request with the status beside it — merged, approved, awaiting review, checks failing, conflicts, draft. A run that finished is not the same thing as a fix that landed, and this is where you see the difference.
Runs succeeded, and fixes merged
Both numbers sit at the top of the page, each with its rate. The gap between them is the honest measure of whether remediation is actually closing — so it's the one we put in front of you.
Your approval queue
Filter to the fixes waiting on a human and clear them in one pass — approve together to open their pull requests, discard what you don't want, or re-trigger a run once you've cleared whatever blocked it.
Re-run without starting over
Clear whatever blocked a run and re-trigger the same work from the row — no going back to the finding to start again.
Scoped to what you're looking at
Narrow to the runs you care about and the headline numbers move with the table — so the metrics always describe the slice in front of you, not the whole estate.
PULL-REQUEST STATUS
A run that finished isn't a fix that landed.
Every pull request the agent opens carries its current state next to the link — so you clear a backlog by reading one column, instead of opening twenty tabs to find out which ones are stuck.
Merged
The fix is in. This is the number that says the loop actually closed — and the one worth reporting.
Conflicts · Checks failing · Changes requested
Open, but going nowhere without a person. These are the rows worth an afternoon, and they're one filter away.
Awaiting review · Approved · Draft
Healthy and moving. Approved with nothing blocking it means someone just needs to hit merge.
One chip: the thing in the way
When several states apply at once, the chip shows the one actually blocking the merge. Checks failing beats awaiting review, because that's what has to change first.
Reply to the agent
Ask for a change on a pull request Heeler opened — mention @heeler with a different approach, a file it missed, a smaller diff — and the agent picks it up, works in the repository, and pushes to that same pull request. No second PR to reconcile.
Bots can ask, too
Name the GitHub bot accounts whose comments should reach the agent — Cursor Bugbot, CodeRabbit — and their review findings land as a fix on that same pull request, with nobody relaying them by hand. Off by default; you choose the accounts.
The reply is on the record too
That run joins the trail as its own agent execution with its full conversation, so the change and the reason for it sit together. Heeler's own bot accounts are ignored, so it never answers itself, and each pull request has a bounded number of response attempts.
What the agent was told
A Context tab shows the instruction content Heeler put in front of the agent for that run — each agent instruction file named by its path in the repository, with its full content and a copy button. The prompt is evidence, not a black box.
What the run covered
A Remediations tab lists what the run was working on — module, package, version, findings and linked ticket, one card each, with the count on the tab. A remediation closed since the run still appears, so the record doesn't rewrite itself.
Reviewed before a developer sees it
A held run has already done the work — fix produced, validated, pull-request content prepared — and stopped there. Nothing has reached the repository and no developer has been told. Approve them in bulk to open the pull requests, or discard them and the fix is dropped.
See it fix a real CVE — then read back everything it did.
Watch the agent take a live finding through to a validated pull request, then open the run and see the plan it followed, the tools it called, and the diff it produced.
