paperclipai/paperclip · error · ToolRuntimeSupervisorError
local_stdio_unavailable_in_public_mode
local_stdio_unavailable_in_public_mode
Error message
Local stdio MCP runtime is unavailable in authenticated public deployments without a trusted runtime host
What it means
assertLocalStdioAvailable refuses to spawn local stdio MCP processes when the deployment is authenticated/public and no trusted runtime host is configured (PAPERCLIP_TOOL_RUNTIME_TRUSTED_HOST / options.hostId absent). Spawning arbitrary local processes on a shared public host would be unsafe, so the capability is hard-disabled; configure a trusted host to enable it.
Source
Thrown at server/src/services/tool-runtime-supervisor.ts:156
?? process.env.PAPERCLIP_TOOL_RUNTIME_TRUSTED_HOST
?? null;
const hostId = options.hostId ?? trustedLocalStdioRuntimeHost ?? process.env.HOSTNAME ?? "local-host";
const idleTtlMs = numberOption(options.idleTtlMs, DEFAULT_IDLE_TTL_MS, 1);
const stuckSlotMs = numberOption(options.stuckSlotMs, DEFAULT_STUCK_SLOT_MS, 1);
const restartBackoffMs = numberOption(options.restartBackoffMs, DEFAULT_RESTART_BACKOFF_MS, 0);
const restartBackoffMaxMs = numberOption(options.restartBackoffMaxMs, DEFAULT_RESTART_BACKOFF_MAX_MS, 0);
const restartStormWindowMs = numberOption(options.restartStormWindowMs, DEFAULT_RESTART_STORM_WINDOW_MS, 1);
const restartStormLimit = numberOption(options.restartStormLimit, DEFAULT_RESTART_STORM_LIMIT, 1);
const maxCompanySlots = numberOption(options.maxCompanySlots, DEFAULT_MAX_COMPANY_SLOTS, 1);
const maxHostSlots = numberOption(options.maxHostSlots, DEFAULT_MAX_HOST_SLOTS, 1);
const maxLogEntries = numberOption(options.maxLogEntries, DEFAULT_MAX_LOG_ENTRIES, 1);
const maxLogBytes = numberOption(options.maxLogBytes, DEFAULT_MAX_LOG_BYTES, 1);
const memoryLimitMb = options.memoryLimitMb ?? null;
const now = options.now ?? (() => new Date());
function assertLocalStdioAvailable() {
if (deploymentMode === "authenticated" && deploymentExposure === "public" && !trustedLocalStdioRuntimeHost) {
throw new ToolRuntimeSupervisorError(
403,
"Local stdio MCP runtime is unavailable in authenticated public deployments without a trusted runtime host",
"local_stdio_unavailable_in_public_mode",
{ deploymentMode, deploymentExposure },
);
}
}
async function writeAudit(input: {
companyId: string;
slotId?: string | null;
runId?: string | null;
issueId?: string | null;
agentId?: string | null;
action: string;
outcome: "success" | "failure";
reasonCode?: string | null;
details?: Record<string, unknown>;View on GitHub (pinned to 120ae5428f)
Solutions
- Local stdio MCP runtimes are disabled in authenticated public deployments. Use remote MCP connections or configure a trusted runtime host.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/services/tool-runtime-supervisor.ts:156 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18).
Data as JSON: /api/errors/c8ce7ea92a43c259.
Report an issue: GitHub.