Skip to content

conductor doctor: offline view misleadingly shows copilot as unconfigured (all credential env vars ✗) #319

Description

Summary

The default (offline) conductor doctor output makes the copilot provider look unconfigured/not-ready, even when it is fully authenticated and working. It renders all of copilot's credential environment variables as red ✗, with no indication that those env vars are optional. New users reasonably read this as "copilot is broken."

In reality, copilot authenticates via the GitHub/Copilot CLI login on disk, so those env vars are best-effort hints — not requirements. This is even stated in a code comment, but never surfaced in the output.

Reproduction

With no GITHUB_TOKEN / GH_TOKEN / COPILOT_PROVIDER_* env vars set (but a valid Copilot CLI login on disk):

$ conductor doctor
...
                                   Providers
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
┃ Provider         ┃ Insta… ┃ Tier  ┃ Credentials                     ┃ Notes  ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
│ copilot          │   ✓    │ stab… │ ✗ GITHUB_TOKEN                  │ —      │
│                  │        │       │ ✗ GH_TOKEN                      │        │
│                  │        │       │ ✗ COPILOT_PROVIDER_API_KEY      │        │
│                  │        │       │ ✗ COPILOT_PROVIDER_BEARER_TOKEN │        │

Every credential row is ✗ and the Notes column is empty — nothing tells the user this is expected/fine.

Actual vs. expected

Actual: All copilot credential env vars show ✗, implying the provider is not ready.

Expected: The offline view should make clear copilot can authenticate via the GitHub/Copilot CLI login and that the env vars are optional overrides — so an all-✗ credentials cell for copilot does not signal a problem.

The provider is in fact ready — the connection probe confirms it:

$ conductor doctor providers --check --provider copilot
│ copilot  │ ✓ │ stable │ ✗ GITHUB_TOKEN ... │ ✓ connected │ — │

Root cause

  • src/conductor/providers/diagnostics.py_CREDENTIAL_ENV_VARS already documents the nuance in a comment, but it never reaches the rendered report:

    Copilot authenticates via the GitHub/Copilot CLI login on disk, so its GitHub-token vars are best-effort hints rather than hard requirements.

  • src/conductor/cli/doctor.py_credentials_cell() renders any absent var as a ✗ (dimmed), identical to a provider that genuinely requires the credential (e.g. claude/ANTHROPIC_API_KEY). There is no per-provider distinction between "required" and "optional hint" credentials, and no note is attached to copilot explaining the CLI-login path.

Proposed fix (options — open to discussion)

  1. Attach an informational note to the copilot diagnostic in the offline path, e.g. authenticates via GitHub/Copilot CLI login; env vars optional, surfaced in the Notes column.
  2. Model credentials as optional vs. required so the renderer can present optional-only providers differently (e.g. label the cell "optional" / neutral styling instead of hard-red ✗ when all creds are merely hints).
  3. Hint toward --check when a provider's readiness can't be determined offline (copilot), so users know the offline view isn't the whole story.

At minimum (1) removes the "looks broken" signal with a small change; (2) is the more principled fix.

Environment

  • Conductor v0.1.22
  • Copilot provider, no credential env vars set, valid Copilot CLI login on disk

Activity

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

Metadata

Metadata

Labels

area:cliCLI commands and entry pointsarea:providerSDK providers (Copilot, Claude)bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions