{"record":{"id":"65b90b698ef82575","repo":"paperclipai/paperclip","slug":"managed-live-sessions-require-an-explicit-qualifie","errorCode":null,"errorMessage":"Managed live sessions require an explicit qualified model","messagePattern":"Managed live sessions require an explicit qualified model","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/paperclip-runner/src/live/live-session.ts","lineNumber":877,"sourceCode":"    this.#transportOptions = options.transportOptions ?? {};\n    this.#now = options.now ?? (() => new Date());\n  }\n\n  async create(input: CreateCapabilityLiveSessionInput = {}): Promise<CapabilityLiveSession> {\n    if (input.provider === \"acpx\" && input.acpxAgent === \"pi\") {\n      throw new Error(\"The Pi ACPX profile is not available\");\n    }\n    if (input.provider === \"claude_managed\" && !input.managedProfile) {\n      throw new Error(\"Claude Managed live sessions require a qualified managed profile\");\n    }\n    if (input.provider === \"aws_agentcore\" && !input.agentCoreProfile) {\n      throw new Error(\"AWS AgentCore live sessions require a qualified AgentCore profile\");\n    }\n    if (\n      (input.provider === \"claude_managed\" || input.provider === \"aws_agentcore\") &&\n      !input.requestedModel?.trim()\n    ) {\n      throw new Error(\"Managed live sessions require an explicit qualified model\");\n    }\n    const port = new CapabilityMockControlPlaneAdapter(input.seed);\n    const seedState = port.serialize();\n    await port.start();\n    const state = port.snapshot();\n    const sessionId = input.sessionId ?? randomUUID();\n    const runId = input.runId ?? randomUUID();\n    const acpxProfile = input.provider === \"acpx\"\n      ? resolveQualifiedAcpxProfile(input.acpxAgent ?? \"codex\", requireNonEmpty(input.requestedModel ?? \"\", \"requested_model\"))\n      : null;\n    const capabilities = [...(input.capabilities ?? [])];\n    const scenario = input.scenario ?? { id: \"capability-live-default\" };\n    const authority: CapabilityLiveAuthoritySnapshot = {\n      active: true,\n      runId,\n      companyId: input.companyId ?? state.company.id,\n      actorId: input.actorId ?? state.actors[0]!.id,\n      taskId: input.taskId ?? state.tasks[0]!.id,","sourceCodeStart":859,"sourceCodeEnd":895,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/packages/paperclip-runner/src/live/live-session.ts#L859-L895","documentation":"For both managed providers (claude_managed and aws_agentcore), create() demands an explicit non-empty requestedModel. Managed remote sessions must pin a qualified model; relying on defaults is rejected so the spend ceiling and qualification remain well-defined.","triggerScenarios":"Calling create({ provider: 'claude_managed' | 'aws_agentcore', ... }) with requestedModel missing, empty string, or whitespace-only.","commonSituations":"Model left to a default that turns out empty; config value read from unset env var yielding ''; user cleared the model field in settings.","solutions":["Pass an explicit, non-empty input.requestedModel for managed providers","Trim/validate the model string before calling create()","Fix config loading so an unset model fails at config time with a clearer message","Pick a qualified model from the profile's allowed model list"],"exampleFix":"// before\nawait liveSession.create({ provider: 'claude_managed', managedProfile, requestedModel: env.MODEL }); // '' if unset\n// after\nconst model = env.MODEL?.trim();\nif (!model) throw new Error('MODEL env var required for managed sessions');\nawait liveSession.create({ provider: 'claude_managed', managedProfile, requestedModel: model });","handlingStrategy":"validation","validationCode":"if ((provider === 'claude_managed' || provider === 'aws_agentcore') && !requestedModel?.trim()) throw new Error('requestedModel required for managed providers');","typeGuard":null,"tryCatchPattern":"try {\n  await liveSession.create(input);\n} catch (err) {\n  if (err instanceof Error && err.message.includes('explicit qualified model')) {\n    // prompt operator to pick a model\n  } else throw err;\n}","preventionTips":["Always set requestedModel explicitly for managed providers","Trim and check non-empty before create()","Fail at config parse time when the model value is blank"],"tags":["live-session","validation","model"],"backgroundTag":"missing-required-argument","analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-09-02T18:44:00.616Z","contentChangedAt":"2026-09-02T18:44:00.616Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}