v2.7.0 - upstream regression workaround
[2.7.0] - 2026-04-18
Emergency release pinning Path A (native Termux) install to @anthropic-ai/claude-code@2.1.112 — the last upstream version that ships the bundled cli.js JavaScript entry point. Versions 2.1.113 and later switched to a platform-native binary distribution that excludes android-arm64; on native Termux those versions install but claude exits immediately with Error: claude native binary not installed. Tracked upstream at anthropics/claude-code#50270. The in-process auto-updater also re-fetches latest on a timer inside running sessions, so the pin must be defended with DISABLE_AUTOUPDATER=1 plus a load-bearing chmod -R a-w on the install directory. Path B (proot-distro Ubuntu) is unaffected — process.platform === 'linux' matches the published linux-arm64 native binary. Path C (AVF) is unaffected for the same reason.
If you installed using v2.6.0 or earlier and your claude is now broken, re-run the new install.sh or follow the recovery steps in the README and docs/troubleshooting.md.
Fixed
- Path A install no longer ships a working CLI without intervention — upstream
@anthropic-ai/claude-code2.1.113 (April 17–18) and 2.1.114 dropped the bundledcli.jsentry and switchedbin/claude.exeto a platform-native binary stub. The android-arm64 native binary is not in the published optional-dependencies list. Postinstall on native Termux finds no matching platform package, leaves the 500-byte error stub in place, and everyclaudeinvocation printsError: claude native binary not installed. v2.6.0 of this guide shippednpm install -g @anthropic-ai/claude-codewith no version pin, so anyone running it after April 17–18 hit the broken state. v2.7.0 pins to2.1.112. - Auto-updater clobbers manual downgrade — Claude Code's in-process updater re-fetches
lateston a timer inside running sessions. A user who manually downgrades to 2.1.112 sees the pin silently re-overwritten with 2.1.114 within minutes. Fix:DISABLE_AUTOUPDATER=1in shell env and~/.claude/settings.json, pluschmod -R a-won the install dir. Thechmodis the load-bearing one — the env reduces but does not stop the attempt. cli-wrapper.cjsreferences in install.sh, README, anddocs/install.mdare now incorrect for 2.1.113+ and were used by v2.6.0 — the wrapper in 2.1.113+ is a strict platform dispatcher withprocess.exit(1)on unsupported platforms (including android), not a JS fallback. v2.7.0 removes those references and uses the bundledcli.jsentry exposed by theclaudesymlink in 2.1.112.
Changed
install.shrewritten — pinsCC_PIN="2.1.112", installs withDISABLE_AUTOUPDATER=1in env, applieschmod -R a-won$PREFIX/lib/node_modules/@anthropic-ai/claude-code/after install, addsDISABLE_AUTOUPDATER=1to~/.bashrc, mergesenv.DISABLE_AUTOUPDATERinto~/.claude/settings.jsonvia jq (preserving any existing config). Detects existing installs and recovers idempotently: chmod +w → reinstall pin → chmod -R a-w. Re-running the script is the supported recovery path.docs/install.md— Step 3 documents the version pin, the auto-updater env, the chmod, and links to upstream#50270. Step 4 launches viaproot -b $PREFIX/tmp:/tmp claude(the bundled cli.js entry exposed by theclaudesymlink in 2.1.112), not throughcli-wrapper.cjs. Step 5 alias updated. "Updating Claude Code" section explains the chmod dance required to upgrade past the pin. "Uninstalling" section adds the chmod -R u+w prerequisite.- README — Path A code blocks updated to the pinned form. Footer version bumped to 2.7.0. Version badge bumped to 2.7.0.
- Step 1 dependencies — added
jqto thepkg installline in install.sh anddocs/install.md(used for safely merging~/.claude/settings.jsonwithout clobbering existing config).
Added
- README top-of-page warning banner linking to recovery instructions for visitors who hit the regression.
- README "April 18 upstream regression — Path A recovery" section under Path A: explains the upstream change, the auto-updater clobber behavior, the recovery steps, and the upgrade path forward.
docs/troubleshooting.mdentry "Claude Code exits: 'native binary not installed'" — full diagnostic, both Path A (pin) and Path B (proot-ubuntu) fixes, and the upgrade-later path.- CHANGELOG note that Path A is now in a maintenance-only state on the upstream side. The strategic move toward Path B (proot-distro Ubuntu) as the primary recommended path is planned for a future release.
Notes
- Path B (proot-distro Ubuntu) and Path C (AVF) are unaffected by the upstream regression. Both run
process.platform === 'linux'which matches the publishedlinux-arm64native binary;npm install -g @anthropic-ai/claude-code(no pin) works normally inside the Ubuntu guest. - The pinned 2.1.112 install was verified end-to-end on Samsung Galaxy S26 Ultra (Android 16, kernel 6.12, Node v25.8.2) on 2026-04-18: install + chmod + auto-updater protection +
claude --versionreturns2.1.112 (Claude Code). - A backup tag
backup/pre-v2.7.0was created onmainbefore this release for rollback. - This guide does not redistribute Anthropic's claude-code package or vendor any binary content; pinning a published npm version and locking permissions on the install directory uses normal npm and POSIX mechanisms.