{"record":{"id":"2f4396d8fb6437d4","repo":"deepseek-ai/deepseek-harness","slug":"caller-not-live","errorCode":"CALLER_NOT_LIVE","errorMessage":"human interaction requires the exact live calling agent when an agent is supplied","messagePattern":"human interaction requires the exact live calling agent when an agent is supplied","errorType":"error_code","errorClass":"UserQuestionError","httpStatus":null,"severity":"error","filePath":"packages/interaction/user-questions/src/index.ts","lineNumber":103,"sourceCode":"   *\n   * @param request Questions, owner agent, and abort signal.\n   * @returns The answer chosen or typed by the human.\n   * @throws {UserQuestionError} code `CALLER_NOT_LIVE` when a supplied\n   *   agent is not the registry's exact live instance, or `DELEGATED_CALLER`\n   *   when that live agent is owned by another agent.\n   */\n  async ask(request: AskUserQuestionRequest): Promise<AskUserQuestionAnswer> {\n    if (request.signal?.aborted) {\n      throw new UserQuestionError('ask_user_question was aborted before the user answered', 'ASK_ABORTED')\n    }\n    if (request.questions.length === 0) {\n      throw new UserQuestionError('ask_user_question requires at least one question', 'EMPTY_QUESTIONS')\n    }\n    const agent = request.agent\n    if (agent !== undefined) {\n      const agents = this.ctx.get('agents')\n      if (agents === undefined || agents.get(agent.id) !== agent) {\n        throw new UserQuestionError(\n          'human interaction requires the exact live calling agent when an agent is supplied',\n          'CALLER_NOT_LIVE')\n      }\n      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) {","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/interaction/user-questions/src/index.ts#L85-L121","documentation":"Error \"human interaction requires the exact live calling agent when an agent is supplied\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/interaction/user-questions/src/index.ts:103 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass the exact live calling agent instance, not a stale or reconstructed agent reference."],"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"}