canvas Config tab renders empty PROVIDER/MODEL for env-resolved workspaces — show effective values, guard Save from wiping #2594

Closed
opened 2026-06-11 16:41:25 +00:00 by core-devops · 0 comments
Member

Live report (agents-team, CP Security Agent 387d0deb): workspace is ONLINE and working, but Config tab shows PROVIDER* = '— select provider —' and MODEL* = '— select provider first —'.

Mechanism: the workspace's stored config is EMPTY (GET /workspaces/:id/config{"data":{}}, DB model=NULL) — it predates/bypassed the create-time model requirement and the runtime resolves model/provider from persona env baked at provision (MODEL / MODEL_PROVIDER / ANTHROPIC_BASE_URL), which is why it runs fine. The Config form renders the stored config only, so it shows blanks for a healthy agent — confusing (today's CTO question: "how can some workspace config without provider and working?") and risky:

  • A user who fills ONLY one field (or hits Save & Restart with blanks) can wedge a working agent (fail-closed model rule rejects, or worse a partial write drifts config vs env).

Asks:

  1. When config.yaml lacks provider/model, the form should show the effective values resolved from the runtime (same source as get_runtime_identity: live env) with a 'derived from environment (not set in config.yaml)' hint — not empty required dropdowns.
  2. Save must not silently clear env-derived routing: either persist the effective values into config on first save, or block save with a clear message.
  3. Backfill consideration: migrate env-resolved workspaces' model/provider into config.yaml (SSOT convergence with providers.yaml registry).

Related: providers.yaml runtime-matrix SSOT (RFC#580 Opt C), CTO 2026-05-22 no-silent-DefaultModel directive.

🤖 Generated with Claude Code

Live report (agents-team, CP Security Agent 387d0deb): workspace is ONLINE and working, but Config tab shows PROVIDER* = '— select provider —' and MODEL* = '— select provider first —'. Mechanism: the workspace's stored config is EMPTY (`GET /workspaces/:id/config` → `{"data":{}}`, DB `model=NULL`) — it predates/bypassed the create-time model requirement and the runtime resolves model/provider from **persona env baked at provision** (MODEL / MODEL_PROVIDER / ANTHROPIC_BASE_URL), which is why it runs fine. The Config form renders the stored config only, so it shows blanks for a healthy agent — confusing (today's CTO question: "how can some workspace config without provider and working?") and risky: - A user who fills ONLY one field (or hits Save & Restart with blanks) can wedge a working agent (fail-closed model rule rejects, or worse a partial write drifts config vs env). Asks: 1. When config.yaml lacks provider/model, the form should show the **effective** values resolved from the runtime (same source as `get_runtime_identity`: live env) with a 'derived from environment (not set in config.yaml)' hint — not empty required dropdowns. 2. Save must not silently clear env-derived routing: either persist the effective values into config on first save, or block save with a clear message. 3. Backfill consideration: migrate env-resolved workspaces' model/provider into config.yaml (SSOT convergence with providers.yaml registry). Related: providers.yaml runtime-matrix SSOT (RFC#580 Opt C), CTO 2026-05-22 no-silent-DefaultModel directive. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2594