Skip to content

fix(cli): suggest the replacement for removed config keys - #7593

Merged
jgoux merged 1 commit into
developfrom
fix/removed-config-key-suggestion
Nov 12, 2026
Merged

jgoux merged 1 commit into
developfrom
fix/removed-config-key-suggestion

Conversation

@jgoux

@jgoux jgoux commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

A config that still uses a removed key, such as an old [inbucket] section, makes supabase start fail. The error says the key is unsupported, but it ends with the generic "Try rerunning the command with --debug" tip, which doesn't help fix the config.

CliConfigRemovedKeyError now carries its own suggestion, which replaces that tip in text and JSON output. A config with one removed key prints:

inbucket in supabase/config.toml is no longer supported. Use local_smtp instead.
Update supabase/config.toml, then rerun the command.

A config with several removed keys prints:

supabase/config.toml uses config keys that are no longer supported:
  inbucket: use local_smtp instead.
  auth.external.slack: use auth.external.slack_oidc instead.
Update supabase/config.toml, then rerun the command.
  • Removed keys are named by their dotted path instead of TOML table syntax (inbucket, not [inbucket]), so the message reads the same for config.toml and config.jsonc. The file name already comes from the loaded path.
  • Legacy start and the stack backend's start, install, update and outdated pass the suggestion through from the config error.
  • It stays a hard error with exit 1. Error codes are unchanged.

@jgoux
jgoux requested a review from a team as a code owner November 12, 2026 08:40
@jgoux jgoux self-assigned this Nov 12, 2026
@jgoux
jgoux requested a review from kanadgupta November 12, 2026 08:40
@github-actions

Copy link
Copy Markdown
Contributor

CLI benchmark (Lightweight Commands): no changes found

Commit 9d746ea against develop at df9a973 · 10 runs each · report only, never blocks merging

Command Workload Before After Change
supabase --version version 169 ms 162 ms no real change
supabase --help help 173 ms 174 ms no real change
supabase init init 169 ms 167 ms no real change
supabase migration new bench migration-new 182 ms 180 ms no real change
supabase config convert config-convert 188 ms 181 ms no real change
supabase gen types --lang typescript --project-id replayfixtureprojref gen-types 201 ms 213 ms no real change (+6%, within normal variation)
supabase projects list projects-list 183 ms 188 ms no real change
supabase functions list --project-ref replayfixtureprojref functions-list 202 ms 199 ms no real change

API calls: unchanged for all 8 commands.

Binary size: 135.0 MB, unchanged.

Details: timing ranges, API calls per command, slowest phases

Timing ranges

Command Workload Before range After range Change Verdict
supabase --version version 149-180 ms 149-180 ms -7 ms (-4%) within noise
supabase --help help 161-198 ms 156-200 ms +1 ms (+1%) within noise
supabase init init 156-180 ms 158-194 ms -2 ms (-1%) within noise
supabase migration new bench migration-new 166-192 ms 169-189 ms -2 ms (-1%) within noise
supabase config convert config-convert 166-211 ms 167-238 ms -7 ms (-4%) within noise
supabase gen types --lang typescript --project-id replayfixtureprojref gen-types 192-226 ms 189-231 ms +12 ms (+6%) within noise
supabase projects list projects-list 177-199 ms 181-203 ms +5 ms (+3%) within noise
supabase functions list --project-ref replayfixtureprojref functions-list 183-218 ms 178-242 ms -3 ms (-1%) within noise

API calls per command

Command Workload Before After Endpoint changes
supabase --version version 0 0
supabase --help help 0 0
supabase init init 0 0
supabase migration new bench migration-new 0 0
supabase config convert config-convert 0 0
supabase gen types --lang typescript --project-id replayfixtureprojref gen-types 2 2
supabase projects list projects-list 1 1
supabase functions list --project-ref replayfixtureprojref functions-list 2 2

Slowest phases

No command moved beyond noise, so there are no phase deltas.

Workflow run

Comment /bench to run the lightweight benchmark (this comment) again on the latest commit, or /bench full to also run the integration-heavy benchmark, which posts in its own comment.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI Review

Both independent reviews were available. Claude's single finding is confirmed as a nonblocking consistency nit: several config-loading paths still discard the new suggestion. The updated start and stack handlers preserve it correctly. No additional findings; validation was static.

Findings

Severity Location Category Sources Claim
⚪ NIT apps/cli/src/command-internal/local-project-context.ts:39 consistency claude Other config-loading paths still discard the removed-key suggestion. Commands using local-project-context, storage config loading, seed-buckets, signing-key config loading, or config-value-passthrough retain the generic '--debug' tip for an unsupported [inbucket] section.

Findings outside the diff

  • ⚪ NIT apps/cli/src/command-internal/local-project-context.ts:39 — Other config-loading paths still discard the removed-key suggestion. Commands using local-project-context, storage config loading, seed-buckets, signing-key config loading, or config-value-passthrough retain the generic '--debug' tip for an unsupported [inbucket] section.

Stats

Claude findings: 1 · Codex findings: 0 · Confirmed: 1 · Refuted: 0 · Uncertain: 0


Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: auto · Workflow run

This review runs once per PR. A maintainer can request another with a /ai-review comment.

@jgoux
jgoux force-pushed the fix/removed-config-key-suggestion branch from 9d746ea to 6b6370f Compare November 12, 2026 11:29
A config that still uses a removed key, such as [inbucket], failed with
the generic "rerun with --debug" footer. CliConfigRemovedKeyError now
carries a suggestion that replaces it in text and JSON output, passed
through by start and the stack start, install, update and outdated
commands.

Removed keys are named by their dotted path instead of TOML table
syntax, so the message reads the same for config.toml and config.jsonc.
@jgoux
jgoux force-pushed the fix/removed-config-key-suggestion branch from 6b6370f to 294275f Compare November 12, 2026 11:33
@jgoux
jgoux added this pull request to the merge queue Nov 12, 2026
Merged via the queue into develop with commit 004482d Nov 12, 2026
53 of 54 checks passed
@jgoux
jgoux deleted the fix/removed-config-key-suggestion branch November 12, 2026 12:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants