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

  1. 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


AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18). Data as JSON: /api/errors/c8ce7ea92a43c259. Report an issue: GitHub.