Atuin v18.1 - Syncing aliases and searching with regex

Announcing a new release of Atuin! v18.1 is out now

Atuin supercharges your productivity by enabling you to rapidly retrieve any command you’ve ran, at any time, from anywhere. It stores your shell history in a database, recording additional command context and syncing it (e2e encrypted) across devices. Get started here

Announcing a new release of Atuin! v18.1 is out now

I've included the full changelog below, but here are some highlights


If you'd like to support Atuin, please consider sponsoring on GitHub

Syncing aliases

With v18, we released sync v2! This meant that syncing a bunch of things from shell-to-shell is now possible.

If you'd like to sync shell aliases, first ensure the following is added to the bottom of your config file - for every machine you use Atuin with:

records = true

enabled = true 

your config file is ~/.config/atuin/config.toml

In a future release, these options will become the default.

Then, set aliases like so!

# Alias 'k' to be 'kubectl'
atuin dotfiles alias set k kubectl

# List all aliases
atuin dotfiles alias list

# Delete an alias
atuin dotfiles alias delete k

After setting an alias, you will either need to restart your shell or source the init file for it to take affect.

In the future, these aliases will be further integrated with your shell history + stats.

If you'd like to share some thoughts about synced dotfiles, please don't hesitate to get in touch!

(thank you @lilydjwg for contributing this!)

Atuin can now search regular expressions with the r/regex/ syntax in the TUI.

For example

Searching for r/^cargo run.*/

This works regardless of search mode

Atuin doctor

In order to better support users, we've added atuin doctor

This will suggest fixes for common problems. It also provides some diagnostic information that makes it much easier for us to provide support on issues

Example output

Please include the output below with any bug reports or issues

  version: 18.0.2
    cloud: true
    records: true
    auto_sync: true
    last_sync: 2024-03-05 14:54:48.447677 +00:00:00
  name: zsh
  - atuin
  os: Darwin
  arch: arm64
  version: 14.4
  - name: Macintosh HD
    filesystem: apfs
  - name: Macintosh HD
    filesystem: apfs

Prune history

(thanks to @xvello for contributing this!)

Atuin supports a number of ways to keep history private. One of these is the history filter

It can be configured like so

## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
history_filter = [
   "^innocuous-cmd .*--secret=.+"

In earlier releases, this only applied to future history. Ie, it would stop recording anything you run afterwards that matches, but anything already in your database would remain

With this change, after adding to history_filter, run. atuin history prune to delete any already stored matches.

Read more in the docs:

There were many more contributions and changes - please read below for a full changelog!

Bug Fixes

  • Don't preserve for empty space (#1712)
  • Fish init (#1725)
  • Add xonsh to auto import, respect $HISTFILE in xonsh import, and fix issue with up-arrow keybinding in xonsh (#1711)
  • Rework #1509 to recover from the preexec failure (#1729)
  • Typo (#1741)
  • Missing or wrong fields (#1740)
  • Check session file exists for status command (#1756)
  • Ensure sync time is saved for sync v2 (#1758)
  • No panic on empty inspector (#1768)
  • Enable multiple command stats to be shown using unicode_segmentation (#1739)
  • Readd up-arrow keybinding, now with menu handling (#1770)
  • Missing characters in preview (#1803)
  • Check store length after sync, not before (#1805)
  • Disable regex error logs (#1806)
  • Attempt to fix timezone reading (#1810)
  • Use a different method to detect env vars (#1819)
  • Record size limiter (#1827)
  • Make atuin compile on non-win/mac/linux platforms (#1825)
  • Set meta.mainProgram in the package (#1823)
  • Re-sync after running auto store init (#1834)


  • Minor formatting updates to the default config.toml (#1689)
  • Update docker compose (#1818)
  • Use db name env variable also in uri (#1840)


  • Use ATUIN_TEST_SQLITE_STORE_TIMEOUT to specify test timeout of SQLite store (#1703)
  • Add 'a', 'A', 'h', and 'l' bindings to vim-normal mode (#1697)
  • Add xonsh history import (#1678)
  • Process Ctrl+m for kitty keyboard protocol (#1720)
  • Add 'ignored_commands' option to stats (#1722)
  • Support syncing aliases (#1721)
  • Change fulltext to do multi substring match (#1660)
  • Add config option keys.scroll_exits (#1744)
  • Add history prune subcommand (#1743)
  • Add alias feedback and list command (#1747)
  • Add PHP package manager "composer" to list of default common subcommands (#1757)
  • Add '/', '?', and 'I' bindings to vim-normal mode (#1760)
  • Add update action (#1779)
  • Normalize formatting of default config, suggest nix (#1764)
  • Add linux sysadmin commands to common_subcommands (#1784)
  • Add CTRL+[ binding as <Esc> alias (#1787)
  • Add nushell completion generation (#1791)
  • Add atuin doctor (#1796)
  • Add checks for common setup issues (#1799)
  • Support regex with r/.../ syntax (#1745)
  • Guard against ancient versions of bash where this does not work. (#1794)
  • Add config setting for showing tabs (#1755)
  • Return early if history is disabled (#1807)
  • Add enable setting to dotfiles, disable by default (#1829)
  • Add automatic history store init (#1831)
  • Adds info command to show env vars and config files (#1841)

Miscellaneous Tasks

  • Add cross-compile job for illumos (#1830)
  • Do not show history table stats when using records (#1835)
  • Setup nextest (#1848)


  • Optimize history init-store (#1691)


  • Update commandline syntax, closes #1733 (#1735)
  • Clarify operation result for working with aliases (#1748)
  • Rename atuin-config to atuin-dotfiles (#1817)

Thank you to everyone who contributed in this release, but a special thank you to the new contributors. 18 new commiters for v18.1 🫶

New Contributors

Full Changelog: