feat(onboard): support non-interactive GitHub Copilot token auth

Add manifest-owned GitHub Copilot token support for non-interactive onboarding, including documented env fallback, ref-mode tokenRef storage, saved-profile reuse, and default model wiring that preserves existing primary model configuration.

Validation:
- pnpm test extensions/github-copilot/index.test.ts src/plugins/contracts/registry.contract.test.ts src/commands/onboard-non-interactive/local/auth-choice-inference.test.ts
- pnpm check:changed
- CI green on aadac2c8d4
This commit is contained in:
Val Alexander
2026-04-26 22:56:20 -05:00
committed by GitHub
parent 18b76e3995
commit 461c10bb51
6 changed files with 498 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
---
summary: "Sign in to GitHub Copilot from OpenClaw using the device flow"
summary: "Sign in to GitHub Copilot from OpenClaw using the device flow or non-interactive token import"
read_when:
- You want to use GitHub Copilot as a model provider
- You need the `openclaw models auth login-github-copilot` flow
@@ -73,6 +73,24 @@ openclaw models auth login-github-copilot --yes
openclaw models auth login --provider github-copilot --method device --set-default
```
## Non-interactive onboarding
If you already have a GitHub OAuth access token for Copilot, import it during
headless setup with `openclaw onboard --non-interactive`:
```bash
openclaw onboard --non-interactive --accept-risk \
--auth-choice github-copilot \
--github-copilot-token "$COPILOT_GITHUB_TOKEN" \
--skip-channels --skip-health
```
You can also omit `--auth-choice`; passing `--github-copilot-token` infers the
GitHub Copilot provider auth choice. If the flag is omitted, onboarding falls
back to `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, then `GITHUB_TOKEN`. Use
`--secret-input-mode ref` with `COPILOT_GITHUB_TOKEN` set to store an env-backed
`tokenRef` instead of plaintext in `auth-profiles.json`.
<AccordionGroup>
<Accordion title="Interactive TTY required">
The device-login flow requires an interactive TTY. Run it directly in a
@@ -122,8 +140,8 @@ openclaw models auth login --provider github-copilot --method device --set-defau
</AccordionGroup>
<Warning>
Requires an interactive TTY. Run the login command directly in a terminal, not
inside a headless script or CI job.
The device-login command requires an interactive TTY. Use non-interactive
onboarding when you need headless setup.
</Warning>
## Memory search embeddings