Title: start-proxy selects an AMD64 binary on Linux ARM64 · Issue #4173 · github/codeql-action · GitHub
Open Graph Title: start-proxy selects an AMD64 binary on Linux ARM64 · Issue #4173 · github/codeql-action
X Title: start-proxy selects an AMD64 binary on Linux ARM64 · Issue #4173 · github/codeql-action
Description: Problem The CodeQL CLI now has native Linux ARM64 support in beta, but the managed private-registry proxy still selects and downloads an AMD64 executable on Linux ARM64. This prevents the proxy from running natively even when CodeQL anal...
Open Graph Description: Problem The CodeQL CLI now has native Linux ARM64 support in beta, but the managed private-registry proxy still selects and downloads an AMD64 executable on Linux ARM64. This prevents the proxy fro...
X Description: Problem The CodeQL CLI now has native Linux ARM64 support in beta, but the managed private-registry proxy still selects and downloads an AMD64 executable on Linux ARM64. This prevents the proxy fro...
Opengraph URL: https://github.com/github/codeql-action/issues/4173
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"start-proxy selects an AMD64 binary on Linux ARM64","articleBody":"## Problem\n\nThe CodeQL CLI now has native Linux ARM64 support in beta, but the managed private-registry proxy still selects and downloads an AMD64 executable on Linux ARM64. This prevents the proxy from running natively even when CodeQL analysis itself can run.\n\nThis report concerns the proxy artifact and architecture selection, not generic CodeQL CLI ARM64 support, registry credentials, custom CA certificates, or outbound network access.\n\n## Source and public release evidence\n\nSource inspected on September 25, 2026: [`fa8392b7e54a5d74a53270a4aa7defa307aa415c`](https://github.com/github/codeql-action/commit/fa8392b7e54a5d74a53270a4aa7defa307aa415c).\n\n- [`getProxyPackage()`](https://github.com/github/codeql-action/blob/fa8392b7e54a5d74a53270a4aa7defa307aa415c/src/start-proxy.ts#L371-L382) selects by `process.platform` only. Every Linux host receives `update-job-proxy-linux64.tar.gz`; `process.arch` is not checked.\n- [`getDownloadUrl()`](https://github.com/github/codeql-action/blob/fa8392b7e54a5d74a53270a4aa7defa307aa415c/src/start-proxy.ts#L424-L475) looks for that filename in the CodeQL bundle release, then falls back to the [hard-coded v2.22.0 release](https://github.com/github/codeql-action/blob/fa8392b7e54a5d74a53270a4aa7defa307aa415c/src/start-proxy.ts#L172-L175).\n- The [v2.27.0 release](https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.0) contains a native `codeql-bundle-linux-arm64` CLI bundle, but the proxy assets are only `linux64`, `osx64`, and `win64`.\n- Fresh inspection of both Linux proxy archives below found ELF `e_machine=62` (`EM_X86_64`), not `183` (`EM_AARCH64`). Downloaded archive hashes match the digests returned by the GitHub Releases API.\n\n| Proxy release | ELF architecture | Archive SHA-256 |\n| --- | --- | --- |\n| v2.27.0 | AMD64 / `e_machine=62` | `77197411d8fe7c6d157f694e2e4edd6b94bf7d9d10c667864cd6a113c31f97b2` |\n| v2.22.0 fallback | AMD64 / `e_machine=62` | `caed6d4ad41849570f6c62f784f20f9414a82738b120f464d7fcad1640f7900b` |\n\n## Public-only reproduction\n\nThis inspects public artifacts without executing them, extracting them to disk, accessing a private registry, or requiring credentials. It can run on any host with curl and Python 3; the affected execution platform is native Linux ARM64 without x86 emulation.\n\n```bash\nfor version in 2.27.0 2.22.0; do\n curl --fail --silent --show-error --location \\\n \"https://github.com/github/codeql-action/releases/download/codeql-bundle-v${version}/update-job-proxy-linux64.tar.gz\" \\\n -o \"proxy-v${version}.tar.gz\" || exit 1\ndone\n\npython3 - \u003c\u003c'PY'\nimport tarfile\nfrom pathlib import Path\n\nfor version in (\"2.27.0\", \"2.22.0\"):\n with tarfile.open(f\"proxy-v{version}.tar.gz\", \"r:gz\") as archive:\n members = [\n member for member in archive.getmembers()\n if member.isfile() and Path(member.name).name == \"update-job-proxy\"\n ]\n assert len(members) == 1\n header = archive.extractfile(members[0]).read(64)\n assert header[:4] == b\"\\x7fELF\"\n assert header[5] in (1, 2)\n byteorder = \"little\" if header[5] == 1 else \"big\"\n machine = int.from_bytes(header[18:20], byteorder)\n print(f\"{version}: ELF e_machine={machine} (62=AMD64, 183=AArch64)\")\nPY\n```\n\nActual output:\n\n```text\n2.27.0: ELF e_machine=62 (62=AMD64, 183=AArch64)\n2.22.0: ELF e_machine=62 (62=AMD64, 183=AArch64)\n```\n\n## Native-run observation and impact\n\nA September 21, 2026 managed CodeQL run on native Linux ARM64, Ubuntu 26.04.1, with CLI 2.27.0 uploaded analyses successfully, but its local registry-proxy connection tests failed with `ECONNREFUSED`; proxy cleanup reported `ESRCH`. This earlier runtime observation is separate from the fresh public-artifact inspection above; no new managed scan was triggered for this report.\n\nSuccessful analysis upload therefore did not establish successful private-dependency resolution. The architecture mismatch can be verified independently of that runner OS version and of any particular private registry. An x64 runner remains the workaround for this proxy path.\n\n## Expected behavior\n\nSelect a native Linux ARM64 proxy artifact when `process.arch === \"arm64\"`, including an architecture-compatible fallback. Until such an artifact is available, fail early with an explicit unsupported-architecture diagnostic rather than attempting to start the AMD64 executable. Tests should cover Linux `x64` and `arm64` selection and fallback behavior.\n\nCould the maintainers confirm whether private-registry proxy support is intended to be part of [Linux ARM64 CodeQL support](https://codeql.github.com/docs/codeql-overview/system-requirements/), or whether this remains an unsupported combination that should be documented explicitly?\n\n## Related, but distinct\n\n#3530 and #3531 address proxy startup retries and false-success/readiness reporting. They may explain why a dead proxy is not surfaced clearly, but they do not add an ARM64 proxy artifact or change architecture selection. This report tracks that architecture gap separately.\n","author":{"url":"https://github.com/debanjanbasu","@type":"Person","name":"debanjanbasu"},"datePublished":"2026-09-25T01:56:10Z","url":"https://github.com/github/codeql-action/issues/4173"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:0ede2704-8349-a24c-9607-d5f150bccc96 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C3E2:A3A4:7A7AA:11ABD6:6AED27C6 |
| html-safe-nonce | 74c63b26d9b50874373919d6268e3a8734ccd4b8d959e8a6da1c0b8427608aa6 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDM0UyOkEzQTQ6N0E3QUE6MTFBQkQ2OjZBRUQyN0M2IiwidmlzaXRvcl9pZCI6IjYxMjY1MjY2MzM0MDI1MDkyNTQiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | b2efa695d1bd82403c53726fda4d5470d891562a2b5ee42c80bdd331f7b9a83a |
| hovercard-subject-tag | issue:5576985379 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/github/codeql-action/4173/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d86d9bb4ad1d27caea0a43cc083ed24b9c40c0b83d403a8826c00fc4b026057f/github/codeql-action/issues/4173 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d86d9bb4ad1d27caea0a43cc083ed24b9c40c0b83d403a8826c00fc4b026057f/github/codeql-action/issues/4173 |
| og:image:alt | Problem The CodeQL CLI now has native Linux ARM64 support in beta, but the managed private-registry proxy still selects and downloads an AMD64 executable on Linux ARM64. This prevents the proxy fro... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | debanjanbasu |
| hostname | github.com |
| expected-hostname | github.com |
| None | 9d95365dda0576efe9b71f45807595e396bd0ca9286fba5367a05048e6ddf8f2 |
| turbo-cache-control | no-preview |
| go-import | github.com/github/codeql-action git https://github.com/github/codeql-action.git |
| octolytics-dimension-user_id | 9919 |
| octolytics-dimension-user_login | github |
| octolytics-dimension-repository_id | 259445878 |
| octolytics-dimension-repository_nwo | github/codeql-action |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 259445878 |
| octolytics-dimension-repository_network_root_nwo | github/codeql-action |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 98b41fa4b5635ceb45a4c54320fced73817ff290 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width