Skip to content

fix(hosted): name a suspended account instead of re-running sign-in - #43

Merged
babaliauskas merged 2 commits into
mainfrom
feat/account-suspended
Oct 10, 2026
Merged

babaliauskas merged 2 commits into
mainfrom
feat/account-suspended

Conversation

@babaliauskas

Copy link
Copy Markdown
Collaborator

What this changes

  • New error type. HostedClient raises HostedAccountSuspendedError, a subclass of HostedHTTPError, when the hosted API answers 403 with code account_suspended. Every existing except HostedHTTPError handler still catches it and prints the server's sentence: "Your account has been suspended. Contact support@evalshift.dev."
  • evalshift login. With a stored token that belongs to a suspended account, it now prints that message and exits 1. Before, it said "stored token is no longer valid; signing in again" and started a browser sign-in that could never be approved.
  • Push auto-create. It repeats the server's message as-is, without the misleading "this token lacks permission" hint.
  • Docs. docs/hosted.md gets a Login paragraph and a Troubleshooting row. DOCS.md, llms-full.txt and CHANGELOG.md are also updated (Unreleased → Fixed).

Why

The server now lets an admin suspend an account (evalshift/evalshift-server#37). Personal tokens and sessions for that account get 403 account_suspended; service-account keys are unaffected. Without this change, login read the 403 as an expired token and looped into browser sign-in.

Test plan

  • pytest passes (make ci: 2753 passed, 94.8% coverage)
  • ruff check, ruff format --check clean
  • mypy --strict clean
  • CHANGELOG.md updated under ## [Unreleased]
  • (If user-visible) docs updated

No version bump; this ships in the next patch release (1.3.1). After release, re-sync public/cli-llms-full.txt in evalshift/evalshift-client.

Screenshots

$ evalshift login
✗ Your account has been suspended. Contact support@evalshift.dev.

🤖 Generated with Claude Code

babaliauskas and others added 2 commits October 9, 2026 22:08
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@babaliauskas
babaliauskas merged commit bea6d63 into main Oct 10, 2026
4 checks passed
babaliauskas added a commit that referenced this pull request Oct 10, 2026
Resolves the CHANGELOG [Unreleased] conflict with #43: both Fixed entries kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
babaliauskas added a commit that referenced this pull request Oct 10, 2026
Resolves the conflicts with #44 and #45:
- DOCS.md captures-store paragraph: main's package-name install wording
  (pip install boto3 / google-cloud-storage / azure-storage-blob
  azure-identity) plus this branch's capture sync --repair re-fetch clause.
- CHANGELOG [Unreleased]: this branch's Added/Fixed entries merged with
  main's Added/Changed/Fixed entries from #43, #44 and #45.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@babaliauskas babaliauskas mentioned this pull request Oct 11, 2026
3 tasks done
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.

1 participant