Skip to content

Android/Termux support broken in v1.0.48+ (runtime.node requires glibc) #3333

@hasankhan

Description

@hasankhan

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:

  1. ripgrep: Looks for ripgrep/bin/android-arm64/rg — fixed by copying from linux-arm64/rg (statically linked, runs fine)
  2. pty.node: Looks for prebuilds/android-arm64/pty.node — fixed by building node-pty from source on Termux
  3. 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

  1. 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.

  2. Add android-arm64 to the platform matrix — The optional dependencies (@github/copilot-linux-arm64, etc.) should include an @github/copilot-android-arm64 variant.

  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:installationInstalling, updating, versioning, PATH setup, and binary distributionarea:platform-linuxLinux-specific: Wayland, X11, Ubuntu, Fedora, Alpine, ARM, terminal emulators

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions