{"record":{"id":"0202da1594332314","repo":"paperclipai/paperclip","slug":"native-runtime-request-resolution-unavailable","errorCode":"native_runtime_request_resolution_unavailable","errorMessage":"native_runtime_request_resolution_unavailable","messagePattern":"native_runtime_request_resolution_unavailable","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/paperclip-runner/src/backends/harness-driver-backend.ts","lineNumber":725,"sourceCode":"          : Promise.resolve().then(() =>\n              interrupt.call(this.#session, {\n                reason: input.reason,\n                signal: input.signal,\n              }),\n            ),\n    };\n  }\n\n  resolveRuntimeRequest(input: {\n    requestId: string;\n    turnId: string;\n    resolution: Parameters<\n      NonNullable<HarnessSession[\"resolveRuntimeRequest\"]>\n    >[0][\"resolution\"];\n  }) {\n    this.#assertProtocolIntegrity();\n    if (this.#session.resolveRuntimeRequest === undefined) {\n      throw new Error(\"native_runtime_request_resolution_unavailable\");\n    }\n    return this.#withProtocolIntegrity(() => this.#session.resolveRuntimeRequest!(input));\n  }\n\n  handoffRuntimeRequest(input: {\n    requestId: string;\n    turnId: string;\n    reason: \"durable_handoff\";\n    signal: AbortSignal;\n  }) {\n    this.#assertProtocolIntegrity();\n    if (this.#session.handoffRuntimeRequest === undefined) {\n      throw new Error(\"native_runtime_request_handoff_unavailable\");\n    }\n    return this.#session.handoffRuntimeRequest(input);\n  }\n\n  goal(input: Parameters<NonNullable<HarnessSession[\"goal\"]>>[0]) {","sourceCodeStart":707,"sourceCodeEnd":743,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/packages/paperclip-runner/src/backends/harness-driver-backend.ts#L707-L743","documentation":"resolveRuntimeRequest forwards a resolution (e.g., answering a permission or input request) to the HarnessSession's optional resolveRuntimeRequest capability. When the driver does not implement it, the backend throws native_runtime_request_resolution_unavailable because pending runtime requests cannot be resolved programmatically for that session.","triggerScenarios":"Calling resolveRuntimeRequest() on a session whose driver has no resolveRuntimeRequest method; resolving a runtime request (permission prompt, input request) on a driver lacking the runtime-request protocol extension.","commonSituations":"Automating approval of permission prompts on an adapter that does not expose request resolution; older driver versions without runtime-request support; driver created from a session factory that omits the resolver hook.","solutions":["Upgrade the driver/adapter to a version implementing resolveRuntimeRequest","Handle the request out-of-band (e.g., configure the agent to auto-approve so no request is raised)","Check capability before issuing resolutions and surface an explicit 'not supported' state in the UI","Route approvals to a human via the board instead of programmatic resolution"],"exampleFix":"// before\nawait backend.resolveRuntimeRequest({ requestId, resolution });\n// after\nif (!backend.canResolveRuntimeRequests()) {\n  throw new UnsupportedFeatureError('runtime request resolution');\n}\nawait backend.resolveRuntimeRequest({ requestId, resolution });","handlingStrategy":"try-catch","validationCode":"if (typeof session.resolveRuntimeRequest !== 'function') throw new Error('runtime request resolution unsupported');","typeGuard":"const canResolve = (s: HarnessSession): s is HarnessSession & { resolveRuntimeRequest: NonNullable<HarnessSession['resolveRuntimeRequest']> } => typeof s.resolveRuntimeRequest === 'function';","tryCatchPattern":"try { await backend.resolveRuntimeRequest({ requestId, resolution }); } catch (e) { if (e.message === 'native_runtime_request_resolution_unavailable') { escalateToHumanApproval(requestId); } else throw e; }","preventionTips":["Detect resolution capability before automating approvals","Surface unsupported-resolution state in the UI","Route approvals through human gates on incapable drivers"],"tags":["runtime-request","capability-missing","protocol"],"backgroundTag":"unsupported-operation","analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-09-10T03:14:50.855Z","contentChangedAt":"2026-09-10T03:14:50.855Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}