{"record":{"id":"4d7f2ccc90d41d14","repo":"deepseek-ai/deepseek-harness","slug":"bad-intent","errorCode":"BAD_INTENT","errorMessage":"question ${question.id} declares intent ${intent.kind} whose approve label ${JSON.stringify(intent.approve)} names none of its options","messagePattern":"question (.+?) declares intent (.+?) whose approve label (.+?) names none of its options","errorType":"error_code","errorClass":"UserQuestionError","httpStatus":null,"severity":"error","filePath":"packages/interaction/user-questions/src/index.ts","lineNumber":125,"sourceCode":"      if (!agents.roots().includes(agent)) {\n        throw new UserQuestionError(\n          'human interaction is unavailable while the calling agent is owned by another live agent; '\n          + \"include the unresolved question or decision in the child agent's final result\",\n          'DELEGATED_CALLER')\n      }\n    }\n    // A presentation intent asserts two things the types cannot: that the\n    // named approve label is one of this question's own options, and that a\n    // plan-review carries the plan it is a review of. A UI honouring the\n    // intent answers with that label, and shows that detail as the plan, so\n    // either gap would put a choice the asker never offered — or an approval of\n    // something invisible — in front of the user. Caught at the asker, where\n    // the mistake is, rather than in each UI.\n    for (const question of request.questions) {\n      const intent = question.intent\n      if (intent === undefined) continue\n      if (!(question.options ?? []).some(option => option.label === intent.approve)) {\n        throw new UserQuestionError(\n          `question ${question.id} declares intent ${intent.kind} whose approve label `\n          + `${JSON.stringify(intent.approve)} names none of its options`,\n          'BAD_INTENT')\n      }\n      if (question.detail === undefined) {\n        throw new UserQuestionError(\n          `question ${question.id} declares intent ${intent.kind} without the detail it reviews`,\n          'BAD_INTENT')\n      }\n    }\n    if (this.provider === undefined) {\n      throw new UserQuestionError('no user-questions provider is registered', 'NO_PROVIDER')\n    }\n    return this.provider.ask(request)\n  }\n}\n\nexport default UserQuestionService","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/interaction/user-questions/src/index.ts#L107-L143","documentation":"Error \"question ${question.id} declares intent ${intent.kind} whose approve label ${JSON.stringify(intent.approve)} names none of its options\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/interaction/user-questions/src/index.ts:125 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Change the intent's approve label so it names one of the question's options, or add a matching option."],"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"}