paperclipai/paperclip · error
native_runtime_request_resolution_unavailable
native_runtime_request_resolution_unavailable
Error message
native_runtime_request_resolution_unavailable
What it means
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.
Source
Thrown at packages/paperclip-runner/src/backends/harness-driver-backend.ts:725
: Promise.resolve().then(() =>
interrupt.call(this.#session, {
reason: input.reason,
signal: input.signal,
}),
),
};
}
resolveRuntimeRequest(input: {
requestId: string;
turnId: string;
resolution: Parameters<
NonNullable<HarnessSession["resolveRuntimeRequest"]>
>[0]["resolution"];
}) {
this.#assertProtocolIntegrity();
if (this.#session.resolveRuntimeRequest === undefined) {
throw new Error("native_runtime_request_resolution_unavailable");
}
return this.#withProtocolIntegrity(() => this.#session.resolveRuntimeRequest!(input));
}
handoffRuntimeRequest(input: {
requestId: string;
turnId: string;
reason: "durable_handoff";
signal: AbortSignal;
}) {
this.#assertProtocolIntegrity();
if (this.#session.handoffRuntimeRequest === undefined) {
throw new Error("native_runtime_request_handoff_unavailable");
}
return this.#session.handoffRuntimeRequest(input);
}
goal(input: Parameters<NonNullable<HarnessSession["goal"]>>[0]) {View on GitHub (pinned to 01ad858492)
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
Example fix
// before
await backend.resolveRuntimeRequest({ requestId, resolution });
// after
if (!backend.canResolveRuntimeRequests()) {
throw new UnsupportedFeatureError('runtime request resolution');
}
await backend.resolveRuntimeRequest({ requestId, resolution }); Defensive patterns
Strategy: try-catch
Validate before calling
if (typeof session.resolveRuntimeRequest !== 'function') throw new Error('runtime request resolution unsupported'); Type guard
const canResolve = (s: HarnessSession): s is HarnessSession & { resolveRuntimeRequest: NonNullable<HarnessSession['resolveRuntimeRequest']> } => typeof s.resolveRuntimeRequest === 'function'; Try / catch
try { await backend.resolveRuntimeRequest({ requestId, resolution }); } catch (e) { if (e.message === 'native_runtime_request_resolution_unavailable') { escalateToHumanApproval(requestId); } else throw e; } Prevention
- Detect resolution capability before automating approvals
- Surface unsupported-resolution state in the UI
- Route approvals through human gates on incapable drivers
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- native_session_multi_run_unavailable
- native_runtime_request_handoff_unavailable
- provider_initialize_protocol_error
- steering is unavailable
- interruption is unavailable
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10).
Data as JSON: /api/errors/0202da1594332314.
Report an issue: GitHub.