Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions