paperclipai/paperclip · error

assigned native MCP name conflicts with the task bridge

Error message

assigned native MCP name conflicts with the task bridge

What it means

Name-collision guard in AcpxRuntimeHost.open: before launching the runtime host, the resolved native MCP launch binding's assigned name is checked against the reserved task-bridge name ('paperclip'); if the environment's assignment collides with the bridge that hosts Paperclip's own task tools, opening is refused to avoid registering two MCP servers under one name. Generic validation — the input at fault is the environment's MCP name assignment.

Solutions

  1. Rename the environment's assigned native MCP server so it no longer uses the reserved 'paperclip' name.
  2. Update nativeMcpLaunchBinding/environment configuration to pick a non-reserved server name.
  3. If the reservation list changed, coordinate which component owns the conflicting name.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/paperclip-runner/src/drivers/acpx/runtime-host.ts:297 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-09-18). Data as JSON: /api/errors/13f3316e0ac83846. Report an issue: GitHub.

Appendix: source

Thrown at packages/paperclip-runner/src/drivers/acpx/runtime-host.ts:297

    this.#credential = input.credential;
    this.#command = input.command;
    this.#toolBridge = input.toolBridge;
    this.#claudeSkillNames = [...input.claudeSkillNames];
  }

  static async open(
    options: OpenAcpxRuntimeHostOptions,
    dependencies: AcpxRuntimeHostDependencies,
  ): Promise<AcpxRuntimeHost> {
    options.signal?.throwIfAborted();
    if (options.agent === "pi") {
      throw new Error(
        "ACPX pi is unavailable until its runtime has descriptor-confined verified launch",
      );
    }
    const nativeMcp = nativeMcpLaunchBinding(options.environment);
    if (nativeMcp?.name === "paperclip") {
      throw new Error("assigned native MCP name conflicts with the task bridge");
    }
    if (options.runtimeContext?.mcp.bindingId && !nativeMcp) {
      throw new Error("assigned native MCP launch binding is unavailable");
    }
    const profile = resolveQualifiedAcpxProfile(options.agent, options.model);
    const binding = await runAbortableAdmissionStage(
      options.signal,
      () =>
        createAcpxRecoveryBinding({
          runtimeDirectory: options.runtimeDirectory,
          normalizedSessionId: options.normalizedSessionId,
          workingDirectory: options.workingDirectory,
          profile,
          requestedModel: options.model,
          permissionMode: options.permissionMode,
        }),
      dependencies.retainAdmissionCleanup,
    );

View on GitHub (pinned to 3f1d897a7c)