{"record":{"id":"032698d7e2f84ff3","repo":"deepseek-ai/deepseek-harness","slug":"the-plan-mode-service-was-reloaded-while-the-plan","errorCode":null,"errorMessage":"the plan-mode service was reloaded while the plan was under review; present the plan again","messagePattern":"the plan-mode service was reloaded while the plan was under review; present the plan again","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/plan/plan-mode/src/index.ts","lineNumber":403,"sourceCode":"          }],\n          agent,\n          signal: exec.signal,\n        }).catch((cause: unknown) => {\n          // A dismissed review is not a failed one: the user took the turn back\n          // to say something the two options do not cover. Say so, because the\n          // generic channel message names ask_user_question, which the model\n          // never called. An abort (turn cancel, provider teardown) keeps its\n          // own message — there is no user to wait for.\n          if (cause instanceof UserQuestionError && cause.code === 'ASK_CANCELLED') {\n            throw new Error('The user dismissed the plan review to speak instead; '\n              + 'stay in plan mode, stop here, and wait for their message.')\n          }\n          throw cause\n        })\n        // A review may outlive this plugin fiber. Without its pre-step listener,\n        // an approved selection could never be appended, so fail and keep planning.\n        if (disposed) {\n          throw new Error('the plan-mode service was reloaded while the plan was under review; present the plan again')\n        }\n        const reviewItems = answer.answers.filter(entry => entry.id === REVIEW_ID)\n        const item = reviewItems.length === 1 ? reviewItems[0] : undefined\n        if (item?.selected.length !== 1 || item.selected[0] !== APPROVE_LABEL || item.custom !== undefined) {\n          const feedback = item?.custom ?? ''\n          throw new Error(feedback === ''\n            ? 'The user chose to keep planning; revise the plan and present it again.'\n            : `The user chose to keep planning; their feedback: ${feedback}`)\n        }\n        // Keep plan guidance for the rest of this assistant tool batch. The\n        // silent selection is appended at the next accepted in-turn pre-step,\n        // before its request assembly.\n        this.pendingIntents.set(agent.session, { active: false, narrate: false })\n        return { approved: true }\n      },\n      presentCall: args => ({\n        card: 'generic',\n        title: firstHeading(args.plan) ?? 'Plan',","sourceCodeStart":385,"sourceCodeEnd":421,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/plan/plan-mode/src/index.ts#L385-L421","documentation":"Error \"the plan-mode service was reloaded while the plan was under review; present the plan again\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/plan/plan-mode/src/index.ts:403 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Present the plan again; the plan-mode service was reloaded during review."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}