atuinsh/atuin · error
too many entries in v0 shell alias delete record
Error message
too many entries in v0 shell alias delete record
What it means
A v0 shell alias 'delete' record must be a msgpack array with exactly 1 field (the alias key). The deserializer rejects the record when the decoded array length is not 1, meaning the payload deviates from the v0 alias-delete schema. This guards against corrupt or version-mismatched record data.
Source
Thrown at crates/atuin-dotfiles/src/store.rs:92
let (key, bytes) =
decode::read_str_from_slice(bytes).map_err(error_report)?;
let (value, bytes) =
decode::read_str_from_slice(bytes).map_err(error_report)?;
if !bytes.is_empty() {
bail!("trailing bytes in encoded shell alias record. malformed");
}
Ok(Self::Create(Alias {
name: key.to_owned(),
value: value.to_owned(),
}))
}
// delete
1 => {
let nfields = decode::read_array_len(&mut bytes).map_err(error_report)?;
ensure!(nfields == 1, "too many entries in v0 shell alias delete record");
let bytes = bytes.remaining_slice();
let (key, bytes) =
decode::read_str_from_slice(bytes).map_err(error_report)?;
if !bytes.is_empty() {
bail!("trailing bytes in encoded shell alias record. malformed");
}
Ok(Self::Delete(key.to_owned()))
}
n => {
bail!("unknown AliasRecord type {n}");
}
}
}View on GitHub (pinned to c0c717ab04)
Solutions
- Align atuin versions across all synced machines
- Delete the malformed delete-record and re-issue the alias deletion from a current client
- Re-sync the alias store from a known-good host
- Check the record store SQLite DB for damaged rows
Defensive patterns
Strategy: validation
Validate before calling
let n = rmp::decode::read_array_len(&mut bytes)?;
if n != 1 { return Err("malformed v0 alias delete record".into()); } Try / catch
match AliasRecord::deserialize(&data) {
Ok(rec) => apply(rec),
Err(e) => log::warn!("skipping bad alias delete record: {e}"),
} Prevention
- Keep client versions in sync across machines
- Re-issue deletions from a current client instead of crafting records
- Never hand-edit record payloads
- Validate records when importing from backups
When it happens
Trigger: Deserializing a v0 alias delete record (record_type 1) whose decoded msgpack array length differs from 1.
Common situations: Syncing records from a newer atuin version into an older client; corrupted record store payloads; manually edited database rows.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- too many entries in v0 shell alias create record
- too many entries in v0 dotfiles env create record, got {}, e
- too many entries in v0 dotfiles var delete record
- too many entries in v0 kv record
- too many entries in v1 kv record
AI-assisted analysis of atuinsh/atuin@c0c717ab04 (2026-09-12).
Data as JSON: /api/errors/f23ebc67afbae467.
Report an issue: GitHub.