Skip to content

Upgrading to 0.24.5 silently invalidates existing authentication (AUTH_004 until re-login) #746

Description

@ryancheley

Summary

After upgrading youtrack-cli from 0.24.4 to 0.24.5, every authenticated command fails with
❌ Not authenticated [AUTH_004] even though the stored credentials from 0.24.4 are still on
disk / in the keyring. The security remediations in 0.24.5 (#740–743 / PR #744) appear to have
changed credential handling so the previously-stored token can no longer be read. The only fix
is to run yt auth login again.

If the re-login is intended (e.g. the old storage was insecure and must be re-written), the
release notes / an upgrade notice should say so explicitly. If it's not intended, it's a
credential-read regression.

Reproduction

  1. Authenticate on 0.24.4 (yt auth login), confirm yt issues list --project-id X works.
  2. Upgrade to 0.24.5 (uv tool upgrade youtrack-cli).
  3. Run any authenticated command:
$ yt auth status
❌ No authentication credentials found [AUTH_004]
Run 'yt auth login' to authenticate first.

$ yt issues list --project-id NGDEV --format json --top 3
❌ Not authenticated
❌ Error listing issues: Failed to list issues

What survived the upgrade (so the token isn't gone, just unreadable)

  • ~/.config/youtrack-cli/.env intact: YOUTRACK_BASE_URL present, YOUTRACK_API_KEY='[Stored in keyring]'.
  • macOS keyring still has entries under service youtrack-cli.
  • But 0.24.5's own loader can't read it:
from youtrack_cli.auth import AuthManager
AuthManager().load_credentials()   # -> None on 0.24.5
                                   #    (returned the AuthConfig with a valid token on 0.24.4)

yt auth login re-stores the credential and everything works again on 0.24.5.

Impact

  • Silent break on upgrade: the credentials look present, but every command fails until re-login.
  • The runtime error (AUTH_004 / Failed to list issues) doesn't explain that an upgrade
    invalidated the token, so it's easy to misdiagnose as a network/permission problem.

Suggestions

  • If intentional: add an upgrade note in the 0.24.5 release notes and, ideally, a one-time
    migration message ("credential storage changed in 0.24.5 — please run yt auth login").
  • If unintentional: restore read-compatibility with credentials written by ≤0.24.4, or migrate
    them on first run.
  • Consider making yt auth status distinguish "no credentials" from "credentials present but
    unreadable/incompatible" to aid diagnosis.

Context

Surfaced via a downstream tool that shells out to yt issues list --format json; the upgrade
broke it purely through this auth change (the JSON/query surface itself is unaffected).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions