AgenTeam Resume
Resume an interrupted pipeline run. Detects stale runs, verifies the last incomplete stage before continuing, and lets the user choose how to proceed.
Process
1. Detect Resumable Runs
python3 <runtime>/agenteam_rt.py resume-detect
Parse the JSON output:
No resumable runs (
resumable_runsis empty): Tell the user: "No interrupted runs found." Stop.One resumable run: Show summary: run_id, task, interrupted stage, last update time. Proceed to step 2.
Multiple resumable runs: List all with run_id, task, stage, and age (time since last_update). Ask the user which to resume. Proceed with their choice.
2. Get Resume Plan
python3 <runtime>/agenteam_rt.py resume-plan --run-id <run_id>
This returns a structured plan with all the information needed to decide how to resume: pipeline_mode, config drift status, interrupted stage details (verify, gate, baseline), completed and remaining stages.
3. Pipeline Mode Check
Read pipeline_mode from the resume plan:
standalone: Continue with the verify-first flow below (step 4+).hotl: This run was managed by HOTL's execution engine. Tell the user: "This is a HOTL-managed run. Resume with/hotl:resume <workflow-file>instead." Stop. AgenTeam does not resume HOTL-managed runs — HOTL owns the step-level state and verify-first logic for those runs.dispatch-only: Dispatch-only runs have no pipeline to resume. Tell the user: "Dispatch-only runs have no pipeline to resume. Re-assign tasks with@<Role> <task>." Stop.
4. Config Drift Check
If config_hash_match is false:
- Warn: "Config has changed since this run started (agenteam.yaml was modified). The run will use the original stage definitions from when it was created. Continue anyway? (yes/no)"
- If the user says no: stop.
- If yes: continue. Run-scoped commands use state snapshots, so config drift is safe — but the user should know.
5. Verify-First
Check interrupted_stage from the resume plan:
If has_verify is true AND verify_safe is true:
Run the verify command to check if the interrupted work actually completed:
bash <plugin-dir>/scripts/verify-stage.sh run "<verify_command>" --cwd "<cwd>"
Verify passes: The interrupted stage's work is actually done. Transition the stage forward:
python3 <runtime>/agenteam_rt.py transition --run-id <run_id> \ --stage <stage> --to passedThen follow normal gating flow:
- If
has_gateis true: transition togated, present gate to user. - If
has_gateis false: transition tocompleted, continue to next stage.
Emit resume event:
python3 <runtime>/agenteam_rt.py event append --run-id <run_id> \ --type stage_resumed --stage <stage> \ --data '{"verify_result": "pass", "action": "advance"}'- If
Verify fails: Present choice (step 6).
If has_verify is false OR verify_safe is false:
Skip verify-first. Go directly to choice (step 6).
6. Choice
Show the user a resume summary:
- Stage name, current status, last update time
- If verify was run: show the result
Offer three options:
Resume persisted attempt (preferred): Inspect the interrupted stage's latest
attempts[]record. If it has athread_id, continue through the runtime harness:python3 <runtime>/agenteam_rt.py run --run-id <run_id>The runner issues
codex exec resume <thread_id> -, preserves the attempt chain, and continues the stored retry budget. Do not launch a second agent while the recorded PID is live.Re-dispatch: Use only when no resumable
thread_idexists and prior side effects have been verified. A fresh redispatch requires explicit approval.python3 <runtime>/agenteam_rt.py transition --run-id <run_id> \ --stage <stage> --to dispatched python3 <runtime>/agenteam_rt.py event append --run-id <run_id> \ --type stage_resumed --stage <stage> \ --data '{"verify_result": "fail", "action": "redispatch"}'Then launch subagents and continue the pipeline from this stage.
Preserve and replay: Query the stage baseline without changing the checkout:
python3 <runtime>/agenteam_rt.py stage-baseline --run-id <run_id> \ --stage <stage> --action rollbackIf
allowedis true, save the current diff to.agenteam/runs/<run_id>/<stage>/resume-recovery.patch. Offer to create a new clean branch/worktree from the baseline and replay there. Never discard or rewrite the current dirty checkout automatically. Ifallowedis false: tell user rollback is not available in this isolation mode.Stop: End the run.
python3 <runtime>/agenteam_rt.py event append --run-id <run_id> \ --type run_finished --data '{"status": "stopped"}'
7. Continue Pipeline
After resuming the interrupted stage (via verify-pass advance or
re-dispatch), continue through the remaining stages using the same
standalone pipeline flow from skills/run/SKILL.md step 6.
The remaining stages are listed in the resume plan's remaining_stages
array. Process each one in order through the standard dispatch → verify
→ gate → handoff flow.
During continuation, report thread_id, last heartbeat, heartbeat age, wall
and idle budget remaining, attempt/retry counts, and stop reason. Runtime state
is the source of truth; chat messages are not checkpoints.
Headless Policy
When CI=true or no TTY detected:
- Skip run selection (if multiple, use the most recent stale run)
- Skip config drift confirmation (proceed with warning to stderr)
- Verify-first always runs (if safe)
- If verify passes → continue automatically
- If verify fails → emit
run_finishedwithstatus: failedandreason: "resume-verify-failed-headless". Do not prompt. stoppedis user-chosen;failedis system-determined
Runtime Path Resolution
Resolve the AgenTeam runtime:
- If running from the plugin directory:
./runtime/agenteam_rt.py - If installed as a Codex plugin:
<plugin-install-path>/runtime/agenteam_rt.py
Resolve scripts:
- If running from the plugin directory:
./scripts/ - If installed as a Codex plugin:
<plugin-install-path>/scripts/
Error Handling
- If
resume-detectfails: show error, suggest checking.agenteam/state/ - If
resume-planfails (run not found): show error with run_id - If verify command fails to execute (not just fails the check): show error and fall back to choice
- If transition fails (invalid state): show error with current status and valid transitions
Source: hashgraph-online/awesome-codex-plugins → plugins/yimwoo/codex-agenteam/skills/resume/SKILL.md