In BYOK/air-gapped sessions /workflows returns "Unknown command" (UI gated on GitHub user/quota data), and with COPILOT_OFFLINE=true the workflow tools are removed entirely — even though dynamic workflows otherwise run fine against a BYOK model.
Proposed solution
Make dynamic workflows fully usable when a BYOK provider is configured, without requiring a GitHub user/quota response:
-
Show /workflows (command, completion, and Workflows view) for BYOK sessions.
Today visibility appears to be gated on the Copilot user response (EXTENSIONS && sessionQuotaProjection(sessionId).dynamicWorkflowsUiVisible), cached in ~/.cache/copilot/copilot-user-cache.json. With no cache (fresh/air-gapped machine) or a stale one (~25 min in my testing), the command disappears, while the underlying tools (run_dynamic_workflow, dynamic_workflows_manage) keep working. When a BYOK provider is active, the UI should follow the same availability as the tools.
-
Support dynamic workflows with COPILOT_OFFLINE=true.
In offline mode the workflow and extension tools are not offered to the model at all (17 vs 25 tools in my test), so workflows are unusable. Authoring/running workflows needs no network when the model is local, so offline mode should keep them.
-
If gating is intentional, explain it. Replace Unknown command: /workflows with a message saying why it is unavailable and how to enable it.
Benefit: on-prem, regulated, and air-gapped users running local models via BYOK (documented as "GitHub authentication is not required") get the same workflow experience — run monitoring, pause/resume, progress — instead of a hidden feature.
Example prompts or workflows
Environment for all examples: air-gapped Linux host, local vLLM model via BYOK:
COPILOT_PROVIDER_BASE_URL=http://<local-host>:<port>/v1 \
COPILOT_MODEL=<local-model> \
copilot --experimental
/workflows → open the Workflows view and watch phases/agents of a running review workflow (today: ✗ Unknown command: /workflows).
- "Create a workflow that reviews every changed file in parallel with a subagent per file, then summarizes findings" → author + run, then monitor it in
/workflows.
- "Resume workflow run with a higher maxTotalSubagents" after a limit was hit, from the Workflows view.
COPILOT_OFFLINE=true copilot --experimental → "What dynamic workflows are available?" (today: the workflow tools are not available in offline mode).
Additional context
- Copilot CLI 1.0.91, Linux x86_64, bash, VS Code integrated terminal.
- Reproduction (no real air gap needed): fresh
COPILOT_HOME, HTTPS_PROXY=http://127.0.0.1:9 NO_PROXY=127.0.0.1,localhost, a local OpenAI-compatible endpoint, then type /workflows.
| Config / network |
/workflows |
Workflow tools work? |
| Signed in, online |
shown |
yes |
| Signed in, air-gapped, right after an online run (fresh user cache) |
shown |
yes |
| Signed in, air-gapped, cache stale (~25 min) |
Unknown command |
yes |
Fresh COPILOT_HOME, online or air-gapped |
Unknown command |
yes (with --experimental) |
COPILOT_OFFLINE=true |
— |
no (tools not offered) |
In BYOK/air-gapped sessions
/workflowsreturns "Unknown command" (UI gated on GitHub user/quota data), and withCOPILOT_OFFLINE=truethe workflow tools are removed entirely — even though dynamic workflows otherwise run fine against a BYOK model.Proposed solution
Make dynamic workflows fully usable when a BYOK provider is configured, without requiring a GitHub user/quota response:
Show
/workflows(command, completion, and Workflows view) for BYOK sessions.Today visibility appears to be gated on the Copilot user response (
EXTENSIONS && sessionQuotaProjection(sessionId).dynamicWorkflowsUiVisible), cached in~/.cache/copilot/copilot-user-cache.json. With no cache (fresh/air-gapped machine) or a stale one (~25 min in my testing), the command disappears, while the underlying tools (run_dynamic_workflow,dynamic_workflows_manage) keep working. When a BYOK provider is active, the UI should follow the same availability as the tools.Support dynamic workflows with
COPILOT_OFFLINE=true.In offline mode the workflow and extension tools are not offered to the model at all (17 vs 25 tools in my test), so workflows are unusable. Authoring/running workflows needs no network when the model is local, so offline mode should keep them.
If gating is intentional, explain it. Replace
Unknown command: /workflowswith a message saying why it is unavailable and how to enable it.Benefit: on-prem, regulated, and air-gapped users running local models via BYOK (documented as "GitHub authentication is not required") get the same workflow experience — run monitoring, pause/resume, progress — instead of a hidden feature.
Example prompts or workflows
Environment for all examples: air-gapped Linux host, local vLLM model via BYOK:
/workflows→ open the Workflows view and watch phases/agents of a running review workflow (today:✗ Unknown command: /workflows)./workflows.COPILOT_OFFLINE=true copilot --experimental→ "What dynamic workflows are available?" (today: the workflow tools are not available in offline mode).Additional context
COPILOT_HOME,HTTPS_PROXY=http://127.0.0.1:9 NO_PROXY=127.0.0.1,localhost, a local OpenAI-compatible endpoint, then type/workflows./workflowsCOPILOT_HOME, online or air-gapped--experimental)COPILOT_OFFLINE=true.claude/agents/*/AGENT.mdmodel:field overrides session model for Copilot custom agents, breaking subagent spawns on BYOK providers #4437 (agentmodel:overrides break BYOK subagent spawns).