Installing or updating Codex CLI and hitting "Could not find Codex package or platform npm release assets for Codex"? The release almost certainly exists. This is the install script failing to read GitHub's release metadata, not a missing build.
The Error
$ sh -c 'curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh'
Could not find Codex package or platform npm release assets for Codex 0.143.0.
The same message appears when running codex update, because that command fetches and runs the same hosted install script.
You can confirm the assets are present yourself: open the release page for the version named in the error and look for the platform archive matching your system, such as codex-package-x86_64-unknown-linux-musl.tar.gz. If it is listed — and it usually is — the installer is misreading metadata rather than encountering a genuinely incomplete release.
Why This Happens
Two distinct causes are documented, and they produce identical output.
1. Fragile release-metadata parsing. The install script identifies release assets by parsing the GitHub API's release JSON with a hand-rolled awk routine. That parser has been reported to mis-handle the deeply nested response, so it concludes no matching asset exists even when one does. A fix landed in the repository's own copy of the script while the copy served from the hosted endpoint remained the older version for a period — which is why codex update could keep failing after the bug was nominally fixed.
2. GitHub API rate limiting. The script queries the GitHub API unauthenticated. Anonymous requests are limited per IP address per hour. When that budget is exhausted, GitHub returns a rate-limit error document instead of release data, the parser finds no assets in it, and you get this exact message. This is why the error is so common on shared office networks, VPN exit points, CI runners and cloud VMs, where many machines share one outbound address — and why it often "fixes itself" an hour later.
Neither cause breaks an existing installation. If Codex is already installed it keeps working; you are simply stuck on your current version.
Fix 1: Install From npm Instead
The quickest resolution is to skip the install script altogether. The npm package delivers the same binary and does not touch GitHub release metadata:
npm install -g @openai/codex
To pin a specific version:
npm install -g @openai/codex@0.143.0
Verify:
codex --version
If npm itself fails with a permissions error, that is a separate problem — see npm EACCES permission denied installing Codex.
Fix 2: Authenticate the GitHub API Request
If you want to keep using the install script, raising the rate limit usually resolves it immediately. Set a token in your environment first — any GitHub personal access token with no special scopes is enough for reading public release metadata:
export GITHUB_TOKEN=ghp_your_token_here
sh -c 'curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh'
Check whether you are actually rate-limited before assuming anything:
curl -s https://api.github.com/rate_limit | grep -A3 '"core"'
A remaining value of 0 confirms the diagnosis, and reset gives the Unix timestamp when the window clears. If remaining is healthy, the parsing bug is the more likely cause and Fix 1 or Fix 3 is the better route.
Fix 3: Use Homebrew
On macOS and Linux, Homebrew is another path that avoids the script entirely:
brew install codex
codex --version
Homebrew installations do not auto-update, so remember to run brew upgrade codex periodically rather than relying on codex update.
Fix 4: Rule Out a Proxy or Filter
On a corporate network, a proxy that intercepts the GitHub API request and returns an HTML error or login page produces the same symptom — the parser finds no asset data in a document that is not JSON.
# Should return JSON, not HTML
curl -s https://api.github.com/repos/openai/codex/releases/latest | head -5
If that returns HTML, a proxy is interfering. Configure HTTPS_PROXY and HTTP_PROXY for your environment, or install from npm through your internal registry mirror instead.
Verify the Fix
codex --version
which -a codex
codex --version should print the version you expected. which -a codex should print one path — if it prints two, you now have both a standalone install and an npm global install, and the one earlier in PATH wins. That mismatch is the usual reason an update appears to succeed while the old version keeps running.
If codex is not found at all after installing, the binary is not on your PATH — see zsh: command not found: codex for the PATH fixes, and Unable to locate the Codex CLI binary if an IDE integration reports it missing.
Prevention
- Prefer npm or Homebrew for installs and upgrades if you work behind a shared IP address. Both avoid the anonymous GitHub API entirely.
- Export a
GITHUB_TOKENin CI images that install developer tooling from GitHub releases. Anonymous rate limits are the most common cause of intermittent, unreproducible install failures in pipelines. - Pin versions in CI rather than always taking the latest, so an installer regression cannot break a build without a deliberate change on your side.
- Keep one install method per machine and check
which -a codexafter switching.
Summary
- The release is not missing — confirm the asset on the GitHub release page
- Install from npm (
npm install -g @openai/codex) to bypass the script entirely - Set
GITHUB_TOKENifapi.github.com/rate_limitshowsremaining: 0 - Try Homebrew as another script-free path
- Check for a proxy returning HTML instead of JSON from the GitHub API
- Run
which -a codexafterwards to catch a duplicate install