[BUG] Native installer incompatible with Termux/Android (Bionic libc), but npm installation shows deprecation warning

Resolved 💬 3 comments Opened Jan 25, 2026 by gianluca-mascolo Closed Jan 29, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Summary

When installing Claude Code via npm on Termux/Android, the CLI displays a deprecation message pushing users toward the native installer:

Claude Code has switched from npm to native installer. Run claude install or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.

However, the native installer binary is fundamentally incompatible with Termux because it's built against glibc, while Android/Termux uses Bionic libc.

Technical Evidence

The native binary is an ELF executable linked against glibc:

$ file claude-2.1.19-linux-arm64
claude-2.1.19-linux-arm64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=d63ecaded0faac9b1e109be15c88f28bd0e0cca5, not stripped

Dependency analysis shows missing glibc libraries:

$ libtree claude-2.1.19-linux-arm64
claude-2.1.19-linux-arm64
└── libpthread.so.0 not found
    ┊ Paths considered in this order:
    ┊ 1. rpath:
    ┊ 2. LD_LIBRARY_PATH was not set
    ┊ 3. runpath was not set
    ┊ 4. ld config files:
    ┊ 5. Standard paths:
    ┊    /data/data/com.termux/files/usr/lib
    ┊    /system/lib
    ┊    /system/lib64
    ┊    /usr/lib
    ┊    /usr/lib64
    ┊    /lib
    ┊    /lib64
Error [claude-2.1.19-linux-arm64]: Not all dependencies were found

The binary expects:

  • Dynamic linker: /lib/ld-linux-aarch64.so.1 (glibc) — Termux uses Android's linker64 (Bionic)
  • libpthread.so.0 — In Bionic, threading is built into libc.so; there's no separate libpthread

This is not a missing library issue — it's a fundamental ABI incompatibility.

Related Issue

This was previously reported in #10644 which requested Termux support for the native client. That issue was closed, but the problem persists and has now become more urgent since npm installation is being deprecated.

Impact

Termux users are now in a situation where:

  1. The supported installation method (native) doesn't work and can never work without a Bionic-compatible build
  2. The working installation method (npm) shows a deprecation warning suggesting users switch to something impossible

What Should Happen?

Suggested Solutions

Any of the following would resolve this:

  1. Detect Termux/Bionic and suppress the deprecation warning — recognize that npm is the only viable method on this platform
  2. Provide a Bionic-compatible native binary for android-arm64
  3. Auto-detect incompatible environments and fall back to npm gracefully instead of showing the warning
  4. Document Termux as an officially supported platform with npm as the recommended installation method

Error Messages/Logs

## Environment

- **Platform**: Android 16 (Termux)
- **Device**: 2410CRP4CG
- **Architecture**: aarch64
- **Claude Code version**: 2.1.19 (npm-global)
- **Node version**: v24.13.0
- **npm version**: 11.6.2
- **Installation method**: npm (native installer fails)

### System Diagnostics


$ uname -a
Linux localhost 6.1.118-android14-11-gca0ef6d17716-ab13624819 #1 SMP PREEMPT Tue Jun 10 18:59:08 UTC 2025 aarch64 Android

$ getprop ro.product.model
2410CRP4CG

$ getprop ro.build.version.release
16

$ echo $PREFIX
/data/data/com.termux/files/usr

$ echo $TMPDIR
/data/data/com.termux/files/usr/tmp

$ which claude
/data/data/com.termux/files/usr/bin/claude

$ which node
/data/data/com.termux/files/usr/bin/node

$ node --version
v24.13.0

$ npm --version
11.6.2

$ npm list -g @anthropic-ai/claude-code
/data/data/com.termux/files/usr/lib
└── @anthropic-ai/claude-code@2.1.19

$ claude --version
2.1.19 (Claude Code)

$ claude doctor
 Diagnostics
 └ Currently running: npm-global (2.1.19)
 └ Path: /data/data/com.termux/files/usr/bin/node
 └ Invoked: /data/data/com.termux/files/usr/bin/claude
 └ Config install method: native
 └ Search: OK (rg)

 Updates
 └ Auto-updates: disabled (CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC set)
 └ Update permissions: Yes
 └ Auto-update channel: latest
 └ Stable version: 2.1.7
 └ Latest version: 2.1.19


Note the mismatch in `claude doctor` output: **Currently running: npm-global** but **Config install method: native** - this reflects the issue where the config expects native but npm is the only working option.

Steps to Reproduce

just run claude

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.19

Platform

Anthropic API

Operating System

Other Linux

Terminal/Shell

Other

Additional Information

_No response_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗