macOS: artifact-tool import fails because skia.node and node_repl have different Team IDs
Summary
The approved ChatGPT/Codex desktop spreadsheet runtime cannot import @oai/artifact-tool on macOS because its bundled native skia.node module has an incompatible signing identity with the OpenAI-signed hardened execution host.
In-product feedback was also submitted without logs. Feedback thread ID: 019f9175-e903-7473-8905-3990e8bc3bfa.
Environment
- ChatGPT/Codex app version:
26.715.70719 - App build:
5650 - Workspace runtime bundle:
26.715.12143 node_replhardened runtime:26.5.0@oai/artifact-tool:2.8.24skia-canvas:3.0.8- Mac architecture: ARM64
Execution host
/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl
- OpenAI Team ID:
2DC432GLL2 - Hardened runtime enabled
- Signature verification passes
- Does not contain the
com.apple.security.cs.disable-library-validationentitlement
Failing native module
/Users/scorcher/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/.pnpm/@oai+artifact-tool@file+local-deps+-oai-artifact-tool-oai-artifact_tool-2.8.24.tgz/node_modules/@oai/artifact-tool/node_modules/skia-canvas/lib/skia.node
- Identifier:
libskia_canvas.dylib - Ad-hoc/linker-signed
- No Team ID
- Signature verification passes independently
Reproduction
Run inside the required node_repl host after registering the approved workspace dependency node_modules directory:
var approvedArtifactToolImport = await import("@oai/artifact-tool");
macOS reports:
code signature ... not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs
The complete dlopen error identifies the skia.node path above and repeats the different-Team-IDs failure for both attempted non-Cryptex paths.
Verified exclusions
- Architecture mismatch: ruled out; host and module are ARM64
- Damaged signature: ruled out; strict signature verification passes
- Quarantine: ruled out
- Missing dependency: ruled out
- Corrupted installation: no evidence
- Reinstalling the official app restored the same affected app and runtime versions and produced the identical failure
Relevant hashes
node_replSHA-256:b2ccfc60722ef09569b2038e60bcef8fef7240fd550651a9d808c6a12a354618skia.nodeSHA-256:05721a911d979194b5346d7f80b0809f2d16d74de5ffc3831da4e67e2ca6eef9
Expected resolution
Please route this to the desktop/Codex runtime engineering team. It appears to require an official runtime package where skia.node is signed compatibly with OpenAI Team ID 2DC432GLL2, or another officially supported packaging correction. Please confirm when a corrected desktop build or workspace runtime bundle is available.
1 Comment
Confirmed that this still reproduces on a newer Desktop/runtime combination and
on Intel macOS:
26.721.81911(build5973)codex-cli 0.146.0-alpha.3.126.727.113262.8.31@oai/artifact-tool2.8.33skia-canvas3.0.8The newer x86_64 runtime copy of
skia.nodeis completely unsigned rather thanlinker/ad-hoc signed:
Its SHA-256 is
8178acf1a69814779d124675502c0ae08868eb190dcc28ea735d0294f8c45d38.I downloaded the official upstream
skia-canvasv3.0.8darwin-x64.gz; after decompression, its SHA-256 is identical, so this is notlocal corruption or signature stripping during the Codex runtime installation.
The updated Desktop app passes deep/strict signature verification. With the
same
NODE_PATH:ChatGPT.app/Contents/Resources/cua_node/bin/nodefails withERR_DLOPEN_FAILED,mapped file has no cdhash, completely unsigned.(
1171exports).The Desktop Node does not have
com.apple.security.cs.disable-library-validation; the runtime Node does. Thisconfirms the same Library Validation boundary reported here and shows that the
problem persists across newer builds and both macOS architectures.
No app, runtime, entitlement, or native-module signature was modified during
the test. Full duplicate report and reproduction details were posted in #36009;
I am closing that issue in favor of this one.