atuinsh/atuin · error

You are not logged in

Error message

You are not logged in

What it means

`atuin account change-password` refuses to run because the local settings indicate no logged-in user. `Settings::logged_in()` checks for a stored session token; without one there is no authenticated session to change a password for, so the command bails early with a guidance message.

Solutions

  1. Run `atuin login` (or `atuin register`) first to establish a session
  2. Verify you are pointing at the intended home: check ATUIN_HOST/ATUIN_HOME env vars so the session token is actually visible
  3. Confirm `~/.local/share/atuin` (or the configured data dir) still contains session state

Example fix

// before
atuin account change-password
// after
atuin login -u myuser
atuin account change-password
Defensive patterns

Strategy: validation

Validate before calling

# shell: ensure a session exists before changing password
atuin login -u "$USER" || { echo 'not logged in'; exit 1; }

Try / catch

atuin account change-password ... || { echo 'Run atuin login first'; exit 1; }

Prevention

When it happens

Trigger: Running `atuin account change-password` before ever running `atuin register` or `atuin login`, or after the session token was removed from the meta store (e.g. `atuin logout` or a wiped config/data directory).

Common situations: Fresh machine or CI container where the user copied settings.toml but never logged in; running the command with ATUIN_HOME pointing at an empty directory; after logout expecting password change to still work.

Related errors


AI-assisted analysis of atuinsh/atuin@900007c480 (2026-09-19). Data as JSON: /api/errors/939f9c4525b8a19b. Report an issue: GitHub.

Appendix: source

Thrown at crates/atuin/src/command/client/account/change_password.rs:23

use rpassword::prompt_password;

#[derive(Parser, Debug)]
pub struct Cmd {
    #[clap(long, short)]
    pub current_password: Option<String>,

    #[clap(long, short)]
    pub new_password: Option<String>,

    /// The two-factor authentication code for your account, if any
    #[clap(long, short)]
    pub totp_code: Option<String>,
}

impl Cmd {
    pub async fn run(&self, settings: &Settings) -> Result<()> {
        if !settings.logged_in().await? {
            bail!("You are not logged in");
        }

        let client = auth::auth_client(settings).await;

        let current_password = self.current_password.clone().unwrap_or_else(|| {
            prompt_password("Please enter the current password: ")
                .expect("Failed to read from input")
        });

        if current_password.is_empty() {
            bail!("please provide the current password");
        }

        let new_password = self.new_password.clone().unwrap_or_else(|| {
            prompt_password("Please enter the new password: ").expect("Failed to read from input")
        });

        if new_password.is_empty() {

View on GitHub (pinned to 900007c480)