{"record":{"id":"4e456cb8da61025a","repo":"paperclipai/paperclip","slug":"unsupported-paperclip-operation-tool","errorCode":null,"errorMessage":"Unsupported Paperclip operation ${tool}","messagePattern":"Unsupported Paperclip operation (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/paperclip-runner/src/drivers/acpx/codex-acpx-driver.ts","lineNumber":1121,"sourceCode":"          // provider turn completes successfully. A failed or interrupted\n          // retry must leave the last completed owner recoverable.\n          this.#pendingSemanticTransfer = {\n            result: structuredClone(validation.result),\n            fingerprint,\n            callId: call.callId,\n            turnId,\n          };\n        } else {\n          this.#semanticResult = structuredClone(validation.result);\n          this.#semanticFingerprint = fingerprint;\n          this.#semanticCallId = call.callId;\n          this.#semanticTurnId = turnId;\n        }\n      }\n      return { accepted: true, feedback };\n    }\n    if (!this.#dynamicToolHandler) {\n      throw new Error(`Unsupported Paperclip operation ${tool}`);\n    }\n    return await this.#dynamicToolHandler({\n      tool,\n      callId: call.callId,\n      providerSessionId: this.#host.identity().agentSessionId,\n      turnId,\n      arguments: structuredClone(call.arguments),\n      signal: call.signal,\n    });\n  }\n\n  async read(): Promise<Record<string, unknown>> {\n    return {\n      identity: this.#host.identity(),\n      binding: this.#host.binding(),\n      status: await this.#host.status(),\n    };\n  }","sourceCodeStart":1103,"sourceCodeEnd":1139,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/packages/paperclip-runner/src/drivers/acpx/codex-acpx-driver.ts#L1103-L1139","documentation":"Unsupported-operation guard in the Codex ACPX driver's tool bridge: a Paperclip tool invocation arrived whose tool name is not among the operations the Codex ACPX session can bridge, so the session rejects it instead of dispatching blindly. Generic validation helper — the input at fault is the unknown/unregistered tool name in the incoming call, typically after a runner/adapter version mismatch or a typo'd tool registration.","triggerScenarios":"Thrown at packages/paperclip-runner/src/drivers/acpx/codex-acpx-driver.ts:1121 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the tool name in the message against the operations the CodexAcpxSession registers in its bridge.","Align runner and adapter versions so both sides advertise the same tool set.","Register an implementation for the missing tool or remove it from the caller's advertised capabilities."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-09-18T08:03:59.046Z","contentChangedAt":"2026-09-18T08:03:59.046Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}