Summary
Copilot CLI v1.0.48 introduced a native Rust addon (runtime.node) that is compiled against glibc, making it impossible to run on Android/Termux where Node.js uses Bionic libc.
Environment
- Platform: Android (Termux)
process.platform: "android"
process.arch: "arm64"
- Node.js: v24.x (Termux package)
- Last working version: 1.0.45
Issues by version
v1.0.45 (workable with patches)
Three fixable issues:
- ripgrep: Looks for
ripgrep/bin/android-arm64/rg — fixed by copying from linux-arm64/rg (statically linked, runs fine)
- pty.node: Looks for
prebuilds/android-arm64/pty.node — fixed by building node-pty from source on Termux
- Platform switch: The native module loader in
app.js/index.js/sdk/index.js doesn't handle case "android" — fixed by patching the JS
v1.0.48+ (BROKEN — no workaround)
A new runtime.node Rust addon was introduced that handles token counting (tiktoken), MCP config parsing, shell analysis, hooks, and session filesystem. It is linked against glibc:
NEEDED: libgcc_s.so.1, libpthread.so.0, libm.so.6, libdl.so.2, libc.so.6
This cannot run on Android because:
- Android uses Bionic libc, not glibc
- The glibc TLS (Thread-Local Storage) model is incompatible with Android's linker
- You cannot mix glibc and Bionic libraries in the same process
- The binary is closed-source Rust, so we cannot rebuild it
Request
-
Ship an Android-compatible runtime.node — Rust supports the aarch64-linux-android target natively. Cross-compiling with cargo build --target aarch64-linux-android would produce a Bionic-compatible binary.
-
Add android-arm64 to the platform matrix — The optional dependencies (@github/copilot-linux-arm64, etc.) should include an @github/copilot-android-arm64 variant.
-
Handle "android" in the platform switch — The JS code in app.js, index.js, and sdk/index.js should map process.platform === "android" to the appropriate prebuild path.
Workaround
We are pinned to v1.0.45. Users who accidentally upgrade are stuck.
Additional context
Termux is a widely-used terminal emulator for Android that provides a Linux-like environment. Node.js runs natively on it. Before v1.0.48, Copilot CLI worked with minor patches. The introduction of the glibc-only native addon broke this entirely.
Summary
Copilot CLI v1.0.48 introduced a native Rust addon (
runtime.node) that is compiled against glibc, making it impossible to run on Android/Termux where Node.js uses Bionic libc.Environment
process.platform:"android"process.arch:"arm64"Issues by version
v1.0.45 (workable with patches)
Three fixable issues:
ripgrep/bin/android-arm64/rg— fixed by copying fromlinux-arm64/rg(statically linked, runs fine)prebuilds/android-arm64/pty.node— fixed by buildingnode-ptyfrom source on Termuxapp.js/index.js/sdk/index.jsdoesn't handlecase "android"— fixed by patching the JSv1.0.48+ (BROKEN — no workaround)
A new
runtime.nodeRust addon was introduced that handles token counting (tiktoken), MCP config parsing, shell analysis, hooks, and session filesystem. It is linked against glibc:This cannot run on Android because:
Request
Ship an Android-compatible
runtime.node— Rust supports theaarch64-linux-androidtarget natively. Cross-compiling withcargo build --target aarch64-linux-androidwould produce a Bionic-compatible binary.Add
android-arm64to the platform matrix — The optional dependencies (@github/copilot-linux-arm64, etc.) should include an@github/copilot-android-arm64variant.Handle
"android"in the platform switch — The JS code inapp.js,index.js, andsdk/index.jsshould mapprocess.platform === "android"to the appropriate prebuild path.Workaround
We are pinned to v1.0.45. Users who accidentally upgrade are stuck.
Additional context
Termux is a widely-used terminal emulator for Android that provides a Linux-like environment. Node.js runs natively on it. Before v1.0.48, Copilot CLI worked with minor patches. The introduction of the glibc-only native addon broke this entirely.