ZeroClaw
ZeroClaw’s unchanged schema version can strand older auth profiles
A ZeroClaw 0.8.3 report says older auth stores still call the provider field “provider” and keep tokens flat, while current code requires “model_provider” and nested token_set. Both shapes claim schema version 1, so every auth command fails and naive hand editing can silently discard credentials.
zeroclaw-labs/zeroclaw issue #9474 is the inspected primary source: “[Bug]: auth profile store fails to load — `model_provider` required with no migration from pre-rename stores.” Issue #9474 reproduces on ZeroClaw 0.8.3, 0.8.2 and current master. An older auth-profiles.json uses provider plus flat access, refresh and identity token fields. Current AuthProfile requires model_provider and defaults the nested token_set field. Because CURRENT_SCHEMA_VERSION remains 1 and the stored file also says 1, the loader cannot select a migration. auth list and auth status abort on the missing field; auth refresh also requires a model-provider argument, leaving no CLI recovery path. Adding only model_provider by hand makes parsing succeed with token_set set to None, moving the failure farther away while losing the loaded credential shape. The report proposes a versioned read migration or a provider alias plus token nesting conversion. PR #8966 separately carries the actual serving provider and model through usage events so routing, fallback, cost and context-window reporting remain coherent. PR #9449 preserves JSONL rows during schema migration.
The facts
- zeroclaw-labs/zeroclaw issue #9474 was created 2026-07-27T23:33:03Z and updated 2026-07-27T23:33:03Z; state is open. - zeroclaw-labs/zeroclaw returned 32415 GitHub stars, 631 open issues, default branch master, and last push 2026-07-27T23:44:27Z. - Latest tagged-release baseline checked: v0.8.3 published 2026-07-16T01:47:13Z. - Issue #9474 reproduces on ZeroClaw 0.8.3, 0.8.2 and current master. - An older auth-profiles.json uses provider plus flat access, refresh and identity token fields. - Current AuthProfile requires model_provider and defaults the nested token_set field. - Because CURRENT_SCHEMA_VERSION remains 1 and the stored file also says 1, the loader cannot select a migration. - auth list and auth status abort on the missing field; auth refresh also requires a model-provider argument, leaving no CLI recovery path.
What changed
Issue #9474 reproduces on ZeroClaw 0.8.3, 0.8.2 and current master. An older auth-profiles.json uses provider plus flat access, refresh and identity token fields. Current AuthProfile requires model_provider and defaults the nested token_set field. Because CURRENT_SCHEMA_VERSION remains 1 and the stored file also says 1, the loader cannot select a migration. auth list and auth status abort on the missing field; auth refresh also requires a model-provider argument, leaving no CLI recovery path. Adding only model_provider by hand makes parsing succeed with token_set set to None, moving the failure farther away while losing the loaded credential shape. The report proposes a versioned read migration or a provider alias plus token nesting conversion. PR #8966 separately carries the actual serving provider and model through usage events so routing, fallback, cost and context-window reporting remain coherent. PR #9449 preserves JSONL rows during schema migration. The primary record was inspected with its timestamps, state, body and adjacent project records. ClawCharts supplied the assignment list; it does not establish the claim.
Why it matters
A schema version is an operational promise, not decoration. When two incompatible persisted shapes share the same number, both automatic recovery and human diagnosis become guesswork. Credential stores are especially unforgiving: permissive defaults can turn a visible parse failure into silent data loss. The useful boundary is where persisted state, visible control and runtime behavior are expected to agree.
Current
The auth issue was open against the latest stable 0.8.3 release and current source. PR #8966 remained open, and PR #9449 was open when the source snapshot was collected. None of the inspected records establishes a shipped auth-store migration. Repository metadata, current issues and pull requests, release baseline, Hacker News discovery and the rendered ranking row were checked. Weak search residue and historically used source spines were not promoted.
Evidence
The primary URL is https://github.com/zeroclaw-labs/zeroclaw/issues/9474. Supporting links are inspected current project records that establish implementation, adjacent direction or boundary conditions. Dates, reproductions, test totals and deployment observations remain attributed to their authors unless this brief explicitly says they were independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. Closure can reflect a documentation decision or triage outcome; it is not silently translated into a shipped code fix. Ranking explains why the project was scanned; it does not prove correctness, adoption or package behavior.
Operator take
Never edit the live credential store as a first response. Preserve a copy without exposing values, validate key shapes only, and require a migration that round-trips old and new fixtures while retaining token material. Bump schema versions whenever persisted meaning changes, and keep one explicit recovery command that can replace an unreadable profile safely. Preserve a before-state receipt and verify the narrowest invariant where state changes. Do not broaden permissions or delete state merely because the visible symptom is inconvenient.
Caveat
Public project records are mutable. Source state was captured at publication time, and later revisions may change status, scope or evidence. No source here authorizes automatic mutation of a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.