diff --git a/extensions/codex/src/app-server/run-attempt.ts b/extensions/codex/src/app-server/run-attempt.ts index 1e684a7141cf..c3f0f2834ba4 100644 --- a/extensions/codex/src/app-server/run-attempt.ts +++ b/extensions/codex/src/app-server/run-attempt.ts @@ -3129,7 +3129,9 @@ export async function runCodexAppServerAttempt( systemPromptReport, }; } finally { - await maybeEmitFastModeAutoResetBestEffort(); + if (params.isFinalFallbackAttempt !== false) { + await maybeEmitFastModeAutoResetBestEffort(); + } codexModelCallDiagnostics.emitError( "codex app-server run completed without model-call terminal event", ); diff --git a/src/auto-reply/reply/agent-runner-cli-dispatch.ts b/src/auto-reply/reply/agent-runner-cli-dispatch.ts index ffa03a7476bb..2d177607f2b8 100644 --- a/src/auto-reply/reply/agent-runner-cli-dispatch.ts +++ b/src/auto-reply/reply/agent-runner-cli-dispatch.ts @@ -540,7 +540,9 @@ async function runCliAgentWithLifecycleInternal( for (const bridge of bridges) { bridge.unsubscribe(); } - await maybeEmitFastModeAutoReset(); + if (params.runParams.isFinalFallbackAttempt !== false) { + await maybeEmitFastModeAutoReset(); + } if (emitLifecycleTerminal && !lifecycleTerminalEmitted) { emitAgentEvent({ runId: params.runId, diff --git a/src/auto-reply/reply/followup-runner.ts b/src/auto-reply/reply/followup-runner.ts index f1eadfd67536..6d47d53840e9 100644 --- a/src/auto-reply/reply/followup-runner.ts +++ b/src/auto-reply/reply/followup-runner.ts @@ -1066,6 +1066,7 @@ export function createFollowupRunner(params: { fastModeStartedAtMs, fastModeAutoOnSeconds: candidateFastMode.fastModeAutoOnSeconds, fastModeAutoProgressState, + isFinalFallbackAttempt: runOptions?.isFinalFallbackAttempt, timeoutMs: run.timeoutMs, runTimeoutOverrideMs: run.runTimeoutOverrideMs, runId,