paperclipai/paperclip · error
remote session deletion requires a connected remote provider
Error message
remote session deletion requires a connected remote provider session
What it means
deleteManagedRemoteSession requires a connected remote managed provider session; the guard rejects the call when the provider is not claude_managed/aws_agentcore or the transport is null. There is no remote session to destroy otherwise, so the call fails explicitly.
Source
Thrown at packages/paperclip-runner/src/live/live-session.ts:2100
this.#config.agentCoreProfile.maxEstimatedSessionCostUsd =
maxSessionListCostUsd;
}
this.#status = this.#activeTurnId === null ? "warm_idle" : "running";
this.#appendEvidence("session", this.#activeTurnId, {
action: "budget_increased",
maxSessionListCostUsd,
});
await this.#persist();
return this.snapshot();
}
async deleteManagedRemoteSession(): Promise<CapabilityLiveSessionSnapshot> {
if (
(this.#config.provider !== "claude_managed" &&
this.#config.provider !== "aws_agentcore") ||
this.#transport === null
) {
throw new Error(
"remote session deletion requires a connected remote provider session",
);
}
if (
this.#activeTurnId !== null ||
this.#turnWaiter !== null ||
this.#pendingTurnAdmission !== null
) {
throw new Error(
"interrupt the active turn before deleting the remote session",
);
}
await this.#transport.request("session/destroy", {});
this.#providerSessionId = null;
this.#authority.active = false;
this.#status = "closed";
this.#appendEvidence("cleanup", null, {
reason: "remote session explicitly deleted",View on GitHub (pinned to 01ad858492)
Solutions
- Only call deleteManagedRemoteSession for claude_managed/aws_agentcore sessions with an active connection
- Check provider and connection state (snapshot/flags) before calling
- Wrap in try/catch in cleanup paths where the session may already be gone
- Reconnect the transport first if deletion must proceed after a disconnect
Example fix
// before
await session.deleteManagedRemoteSession(); // cleanup, may throw
// after
const snap = session.snapshot();
if ((snap.provider === 'claude_managed' || snap.provider === 'aws_agentcore') && snap.connected) {
await session.deleteManagedRemoteSession().catch(() => {});
} Defensive patterns
Strategy: try-catch
Validate before calling
const isManaged = cfg.provider === 'claude_managed' || cfg.provider === 'aws_agentcore'; if (!isManaged || !session.isConnected?.()) return; // nothing to delete remotely
Try / catch
try {
await session.deleteManagedRemoteSession();
} catch (err) {
if (err instanceof Error && err.message.includes('remote session deletion requires')) {
// session already local/disconnected; treat as already deleted
} else throw err;
} Prevention
- Make remote cleanup idempotent and state-checked
- Skip deletion for non-managed providers
- Handle disconnects before issuing remote operations
When it happens
Trigger: Calling deleteManagedRemoteSession on a local/mock provider session, or on a managed session whose transport was never connected or has since been disconnected/nullified.
Common situations: Cleanup/shutdown code that unconditionally deletes remote sessions; calling delete after the remote connection already dropped; provider switched away from managed without updating cleanup logic.
Related errors
- remote session budget updates require a connected remote pro
- interrupt the active turn before deleting the remote session
- The Pi ACPX profile is not available
- Claude Managed live sessions require a qualified managed pro
- AWS AgentCore live sessions require a qualified AgentCore pr
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-02).
Data as JSON: /api/errors/96b36797964cd8cc.
Report an issue: GitHub.