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
- Run `atuin login` (or `atuin register`) first to establish a session
- Verify you are pointing at the intended home: check ATUIN_HOST/ATUIN_HOME env vars so the session token is actually visible
- 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
- Always pair account-management commands with a prior `atuin login` in scripts
- Pin ATUIN_HOME/data-dir env vars so session state is found
- Check `atuin status`/sync success as a session smoke test
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
- No CLI session found. Please log in first with 'atuin…
- You are not logged in
- authentication canceled
- A script named ' ' already exists
- `atuin history tail` requires Atuin to be built with the…
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)