atuinsh/atuin · error
please provide a new password
Error message
please provide a new password
What it means
The new-password value is empty. After resolving `--new-password` or interactive prompt, an empty string is rejected because the server would refuse or weaken the account; `run` bails before issuing the change request.
Solutions
- Provide a non-empty value via `--new-password`
- Type the new password at the interactive prompt
- Verify any password-generating step in your script actually produced output before invoking atuin
Example fix
// before NEW_PW=$(maybe-generate-pw) # may be empty atuin account change-password --new-password "$NEW_PW" // after NEW_PW=$(openssl rand -base64 24) atuin account change-password --new-password "$NEW_PW"
Defensive patterns
Strategy: validation
Validate before calling
: "${NEW_PW:?new password must be set}"
[ -n "$NEW_PW" ] || exit 1 Try / catch
atuin account change-password --new-password "$NEW_PW" ... || { echo 'empty new password'; exit 1; } Prevention
- Generate passwords with a tool that fails loudly on empty output
- Guard generator output: [ -n "$NEW_PW" ] || exit 1
- Avoid interactive prompts in non-TTY automation
When it happens
Trigger: Passing `--new-password ''`; an empty environment variable interpolated into the flag; pressing Enter at the 'Please enter the new password:' prompt without typing anything.
Common situations: Scripted password rotation where the generator produced empty output; shell variable expansion with unset vars; accidental Enter-skip during interactive prompt.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- please provide a password
- please provide the current password
- please provide your password
- Config key must be non-empty and must not contain whitespace
- Failed to read from input
AI-assisted analysis of atuinsh/atuin@900007c480 (2026-09-19).
Data as JSON: /api/errors/01bafbef9070363f.
Report an issue: GitHub.
Appendix: source
Thrown at crates/atuin/src/command/client/account/change_password.rs:42
}
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() {
bail!("please provide a new password");
}
let mut totp_code = self.totp_code.clone();
loop {
let response = client
.change_password(¤t_password, &new_password, totp_code.as_deref())
.await?;
match response {
MutateResponse::Success => break,
MutateResponse::TwoFactorRequired => {
totp_code = Some(super::login::or_user_input(None, "two-factor code"));
}
}
}
println!("Account password successfully changed!");View on GitHub (pinned to 900007c480)