paperclipai/paperclip · error

runner_local_provider_artifact_incompatible

runner_local_provider_artifact_incompatible

Error message

runner_local_provider_artifact_incompatible: ACPX local launch must use build-owned artifacts

What it means

Guard in acpxRunnerLaunchProfile: without a runnerFilesystemRoot the ACPX launch is local and must use build-owned artifacts (process.execPath and the in-build acpx-runtime-sidecar.js). Supplying remote-pack options — providerNodeCommand, providerNodeCommandSha256, acpxSidecarPath, acpxSidecarSha256, or providerPackAuthorityDigests — is contradictory, so the 'runner_local_provider_artifact_incompatible' error is thrown to prevent a local run from claiming remote-pack authority.

Source

Thrown at packages/paperclip-runner/src/live/runnerd-codex-transport.ts:2782

  sidecarScriptSha256: string;
} {
  const localDigest = (path: string) =>
    `sha256:${createHash("sha256").update(readFileSync(path)).digest("hex")}`;
  if (!options.runnerFilesystemRoot) {
    const buildCommand = process.execPath;
    const buildSidecarCandidates = buildOwnedCliArtifactCandidates(
      "acpx-runtime-sidecar.cjs",
    );
    if (
      options.providerNodeCommand !== undefined ||
      options.providerNodeCommandSha256 !== undefined ||
      options.acpxSidecarPath !== undefined ||
      options.acpxSidecarSha256 !== undefined ||
      options.providerPackAuthorityDigest !== undefined ||
      command !== buildCommand ||
      !buildSidecarCandidates.includes(sidecarScript)
    ) {
      throw new Error(
        "runner_local_provider_artifact_incompatible: ACPX local launch must use build-owned artifacts",
      );
    }
    const buildSidecar = resolveBuildOwnedCliArtifact(
      "acpx-runtime-sidecar.cjs",
      buildSidecarCandidates,
    );
    if (sidecarScript !== buildSidecar) {
      throw new Error(
        "runner_local_provider_artifact_incompatible: ACPX local launch must use build-owned artifacts",
      );
    }
    const commandSha256 = localDigest(buildCommand);
    const sidecarScriptSha256 = localDigest(buildSidecar);
    return {
      authorityDigest: commandDigest({
        schema: "paperclip.runner.local-acpx-authority.v1",
        commandSha256,

View on GitHub (pinned to 01ad858492)

Solutions

  1. Remove providerNodeCommand/providerNodeCommandSha256/acpxSidecarPath/acpxSidecarSha256 and provider-pack authority digest options for local launches.
  2. Set runnerFilesystemRoot if a remote provider pack is actually intended, so the remote artifact path is taken.
  3. Let the local branch compute its own digests from build-owned files instead of passing them in.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/paperclip-runner/src/live/runnerd-codex-transport.ts:844 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/18681fa588b458e0. Report an issue: GitHub.