Yeachan-Heo/oh-my-codex · warning · Error
shutdown_confirm_issues_required:failed=${gate.failed}:rerun
Error message
shutdown_confirm_issues_required:failed=${gate.failed}:rerun=omx team shutdown ${sanitized} --confirm-issues What it means
Shutdown gate refusal in issue-confirmation mode: the gate is not allowed, failed tasks exist, and the caller did not pass --confirm-issues or force. The message embeds the failed count and the exact rerun command with --confirm-issues.
Source
Thrown at src/team/runtime.ts:4937
: '';
const governance = resolveGovernancePolicy(
manifest?.governance,
manifest?.policy as Partial<TeamGovernance> | undefined,
);
const classification = await withTeamTaskMembershipBarrier(sanitized, cwd, async () => {
const current = await classifyShutdown({
teamName: sanitized,
cwd,
config: config!,
governance,
confirmIssues,
});
const { gate, requiresIssueConfirmation } = current;
if (!force && !gate.allowed) {
if (requiresIssueConfirmation) {
throw new Error(
`shutdown_confirm_issues_required:failed=${gate.failed}:rerun=omx team shutdown ${sanitized} --confirm-issues`,
);
}
throw new Error(
`shutdown_gate_blocked:pending=${gate.pending},blocked=${gate.blocked},in_progress=${gate.in_progress},failed=${gate.failed}`,
);
}
const now = new Date().toISOString();
const existingPhase = await readTeamPhaseState(sanitized, cwd);
const terminalReason = force ? 'forced_shutdown' : 'shutdown_gate_passed';
await writeTeamPhaseState(sanitized, {
current_phase: existingPhase?.current_phase ?? 'team-exec',
max_fix_attempts: existingPhase?.max_fix_attempts ?? 3,
current_fix_attempt: existingPhase?.current_fix_attempt ?? 0,
transitions: existingPhase?.transitions ?? [],
updated_at: now,
terminal_epoch: existingPhase?.terminal_epoch ?? now,View on GitHub (pinned to 3ad79a8a6f)
Solutions
- Re-run the exact command in the message with --confirm-issues (e.g. `omx team shutdown <team> --confirm-issues`) to acknowledge failed tasks
- Investigate and fix the failed tasks first, so the gate allows a normal shutdown
- Use force only if destroying the team despite failures is intentional
Example fix
# before omx team shutdown myteam # after omx team shutdown myteam --confirm-issues
Defensive patterns
Strategy: validation
Validate before calling
const { gate, requiresIssueConfirmation } = await evaluateShutdownGate(teamName, { confirmIssues: false });
if (requiresIssueConfirmation && gate.failed > 0) throw new Error('pass --confirm-issues or fix failures'); Try / catch
try { await shutdownTeam(t, cwd, { force: false }); } catch (e) { if (/^shutdown_confirm_issues_required:/.test((e as Error).message)) await shutdownTeam(t, cwd, { confirmIssues: true }); else throw e; } Prevention
- Triage failed tasks before shutdown
- Automate --confirm-issues in pipelines that intentionally discard teams
- Never default to force in production
When it happens
Trigger: Calling shutdown without force while the shutdown gate finds failed tasks and requiresIssueConfirmation is true — the API demands explicit acknowledgement of failed issues before teardown.
Common situations: Shutting down a team where some tasks failed; operators scripting shutdown without accounting for the confirm-issues gate; governance configured to require issue confirmation on shutdown.
Related errors
- shutdown_gate_blocked:pending=${gate.pending},blocked=${gate
- remove aborted by user (pass --force to skip confirmation)
- Usage: omx team shutdown <team-name> [--force] [--confirm-is
- shutdown_config_missing:${config.name}
- shutdown_config_missing_after_commit:${current.name}
AI-assisted analysis of Yeachan-Heo/oh-my-codex@3ad79a8a6f (2026-08-27).
Data as JSON: /api/errors/c2d89aa536190df6.
Report an issue: GitHub.