About hot mode
Use hot mode for a change that must land now, or when the loop itself is broken. You, the Principal, edit a task branch live with an agent beside you. There is no sandboxed Developer, no rounds and no controller. Every gate still runs at commit and push, review still happens, and the record still gets a run.
In hot mode the agent acts as the Principal. It edits, commits and pushes with your own login; merge stays yours. There is no credential exception and no confined session. You are accountable for every commit the agent makes. The agent's own local edits are not recorded, as with every agent's local edits.
To walk through it, follow the guide Deploy hot issue now.
| Role | In hot mode |
|---|---|
| Principal | Writes the hot Issue and does its readiness check in person (recorded); runs hot start; launches any agent in the worktree; merges |
| Agent | Acts as the Principal: edits, commits and pushes to the task branch; may run hot review |
| Code reviewer, Security | Dispatched once per hot review attempt, in parallel, as in the loop |
| Operator | Never enters hot mode: hot start refuses when called through the task-tools MCP server |
| Developer, controller | Not involved |
How it works
- 1
Write the hot Issue
Write an Issue of kind
hotand do its readiness check yourself. - 2
Start
Run
vinaya hot start -. It freezes the brief, creates the task branch and worktree, and mints a run identity.- issue <n> - 3
Work
You or the agent commit and push to the task branch through the ordinary hooks.
- 4
Review on demand
Run
vinaya hot review -when you want the two reviewers to judge the pull request.- issue <n> - 5
Merge
Merge through the unchanged merge gate. A push after review voids the verdicts, so review again first.
The hot Issue
A hot Issue is a GitHub Issue of kind hot, labelled vinaya/hot. Its body follows the backlog single-fix profile:
**Project:**- one or two
## Objectives ## Premises## Surface- a Boundary with
Pinned files: ## Test plan- optionally
## Observed - the line
Readiness: performed by the Principal
Like every Issue, it carries **Parent:**. See Issue kinds.
Start a hot run
vinaya hot start --issue <n>hot start:
- reads
principalsfrom the default branch, and refuses if the default branch cannot be read, if the Issue's author is not a principal, or if it is called through the task-tools MCP server (advisory until authority is fully specified); - refuses while a live driver lock or a pause record exists for the task;
- freezes the brief, creates
task/issue-<n>and its worktree fromorigin/<parent>, and records the worktree path besidedriver.pid.json; - mints a run identity, emits
run_started, and printsexport VINAYA_.RUN_ ID=<id>
To build the worktree from a branch that is already pushed, use --adopt-branch:
vinaya hot start --adopt-branch <name> --issue <m>This pushes no reservation and freezes a brief naming that branch. It is how an integration branch gets its review. See Parent and integration branches.
Work
You or the agent commit and push to task/issue-<n> through the ordinary hooks. Three rules always hold:
| Rule | Enforced by |
|---|---|
Never a push to main | Branch protection, the pre-push hook and the direct-push-to-main audit. check- refuses any other target from a hot worktree. |
| Always a registered worktree | hot review and pr report --push refuse outside the recorded path. hot review refuses a head commit whose committer is not a principal. |
| Parent branch always declared | **Parent:** on the Issue (absent means main). The worktree forks from the parent and the pull request targets it. |
Review on demand
vinaya hot review --issue <n>You or the agent run it on demand, from the registered worktree, on the open pull request:
- 1
Check the pull request
Refuses if the body lacks
Closes #<n>or the brief hash resolves to null. - 2
Number the attempt
Numbers the attempt within the hot run.
- 3
Stage the inputs
Stages the candidate inputs with the loop's own functions and takes the turn-confinement snapshot.
- 4
Dispatch both reviewers
Dispatches the code reviewer and the security reviewer in parallel, under the hot run identity.
- 5
Build verdicts and manifest
Builds the verdicts and the review-input manifest with the loop's builders.
- 6
Post the verdicts
Posts both verdicts with effect key
hot-and owner<runId>- <attempt>- <role>- verdict hot-, reads them back to verify the binding, and writes no summary comment.review:<task>:<runId> - 7
Finish the report
Writes the
AEG:BEYOND-block and runsSURFACE pr report --push.
Review again after a push
A push after hot review voids the verdicts, because the review gate binds to the head. Review does not run again by itself: the next hot review is attempt n+1, keyed hot-.
End
hot review emits run_ended when both verdicts are posted. Merge is yours, through the unchanged merge gate. The review gate needs no loop and accepts a head branch that is not task/issue-<n>.
Run identity
hot start mints one run per hot fix. run_started and run_ended mark a task that has no loop. Each review attempt adds two role_attempt and two effect events. task_status shows the task as hot, with its pull request and last attempt.
Gates
| When | What runs | Ring |
|---|---|---|
| Commit and push | Every Ring 0 check through the hooks, plus three new diff-scoped checks: a credential scan, a commit-header check (registered beside commit-msg), and protected paths on task branches | 0 |
| Pull request | closes-n, surface-scope, test-plan, evidence-fresh, body-bare-digits; Ring 0 and the three new checks run again in CI | 1 |
| Review | review-gate on the verdict pair from hot review | 1 |
| Before merge | principal-; required checks green on the current head | 1 |
The three new checks read git diff - when VINAYA_, and git diff ${BASE_ otherwise. See Gates.
Configuration
Hot mode adds no settings. It uses principals from the default branch.
Two questions are still open: whether the protected-path check applies on branches that are not task branches, and whether to fail open or closed when the forge is unreachable.
What gets logged
run_startedandrun_ended(new, for a task without a loop).- Per review attempt,
role_attemptandeffectevents with distincteffect_ids. - Hooks and CI emit
gateevents as usual.
See Events.