Skip to content

vix deadlocks when creating an OAuth token without an OS keychain #53

Description

@Ramblurr

Vix freezes when I select Models > OpenAI > OAuth > Create token on a Linux desktop without a Secret Service provider. The client stops accepting input and has to be kill -9ed

Steps to reproduce

  1. Run Vix in an environment where org.freedesktop.secrets has no owner on the user D-Bus.
  2. Open the Vix client.
  3. Press F3 to open Models.
  4. Select OpenAI.
  5. Move focus to Credentials, then select OAuth.
  6. Select Create token and press Enter.

The Secret Service name has no owner on the user D-Bus:

org.freedesktop.secrets: no owner

Expected behavior

  • Vix should fallback to storing the token on disk like it does other credentials or at least report to me there is an error, it shouldn't freeze

Actual behavior

The TUI stops responding. F1 and other keys have no effect, no browser opens, and no OAuth callback listener starts.

Environment

  • Vix client: 0.5.3
  • Vix daemon: 0.5.3
  • OS: NixOS 26.11
  • Kernel: Linux 6.18.38, x86_64
  • Desktop: niri on Wayland
  • Go: 1.26.4

Diagnostics

Vix logs that it cannot use the OS keyring:

[config] OS keyring unavailable; storing credentials in plaintext at /home/ramblurr/.vix/auth.json (0600). Set provider env vars (e.g. ANTHROPIC_API_KEY) to avoid on-disk storage.

A SIGQUIT goroutine dump shows the Bubble Tea event loop blocked in Program.Send:

goroutine 1 [select]:
charm.land/bubbletea/v2.(*Program).Send
    charm.land/bubbletea/v2@v2.0.2/tea.go:1165
github.com/get-vix/vix/internal/ui.sendToProgram
    internal/ui/login.go:81
github.com/get-vix/vix/internal/ui.startProviderLogin
    internal/ui/login.go:51
github.com/get-vix/vix/internal/ui.Model.activateAuthButton
    internal/ui/model.go:2086
github.com/get-vix/vix/internal/ui.Model.handleModelsKey
    internal/ui/model.go:1950
github.com/get-vix/vix/internal/ui.Model.Update
    internal/ui/model.go:504
charm.land/bubbletea/v2.(*Program).eventLoop
    charm.land/bubbletea/v2@v2.0.2/tea.go:853

and busctl reports:

$ busctl --user call org.freedesktop.DBus /org/freedesktop/DBus \
     org.freedesktop.DBus GetNameOwner s org.freedesktop.secrets
Call failed: The name does not have an own

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions