NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #100 by repository stars
Last release 13 days ago
22 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 52 of 54 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
125 releases · first in 2016
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
golang-rewrite: remove asdf update command to prepare for Go version
Only display the "can't keep downloads" warning when asked to keep downloads
plugin test git-ref to use plugin repo default branch
pipefail (#1608)plugin test git-ref to use plugin repo default branch (#1694) (6d8cf9d)ASDF_NU_DIR (#1660) (dfea89c)pipefail (#1608) (4085e55)asdf version command under help.txt UTILS section (#1673) (240a5fb)def --env instead of def-env (#1681) (3b8f400)bin/ directory (#1643) (61420ad)Nothing published for this version
fish: use builtin realpath over system one
upgrade deps & fix breaking changes
plugin list exit code 0 when no plugins are installed (#1597)plugin list exit code 0 when no plugins are installed (#1597) (a029c00)Remove files containing only asdf wrapper functions
asdf wrapper functions (#1525)ASDF_${LANG}_VERSION usage (#1528) (63f422b)asdf info show BASH_VERSION & all asdf envs (#1513) (a1b5eee)mkdir -p (#1563) (d6185a2)nullglob guard (#1545) (f273612)ASDF_FORCE_PREPEND variable on POSIX entrypoint (#1560) (5b7d0fe)bin/asdf (#1516) (13c0e2f)asdf wrapper functions (#1525) (00fee78)asdf_tool_versions_filename (#1544) (b36ec73)asdf shim-versions completions in fish & bash (#1554) (99623d7).tool-versions or asdfrc contains carriage returns (#1561) (097f773)Prepend asdf directories to the PATH in Nushell
bash completion for latest command
Nothing published for this version
reshim did not rewrite executable path
reshim did not rewrite executable path (#1311) (5af7625)path: versions to use ~ (#1403) (670c96d)pwd (dd37b6f)scripts/checkstyle.py (#1385) (3492043)$(pwd) in favor of $PWD (f522ab9)Nothing published for this version
Disable short-name repository with config value
asdf list output (#762) (5ea6795)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
case-insensitive filtering of unstable versions in latest
latest (#1139) (e61e3d9)ls command (#1141) (87137e4)find errors (#1102) (5992abb)$PATH (#1174) (682b7a1)Nothing published for this version
Nothing published for this version
Nothing published for this version
asdf latest defer to plugin to determine the latest version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Support for latest version in shell, local, and global commands (#802, #801)
Features
Fixed Bugs
echo command from asdf codebase (#806, #781)sort -V command from the asdf codebase (#755, #867)plugin update --all so that the default branch is used for each plugin (#800)system version (#911)Documentation
.zshrc (#871)system version (#925, #868)Nothing published for this version
Add support for plugin documentation callback scripts (#512, #757)
Features
.tool-versions (#759, #760)asdf info command to print debug information (#786, #787)Fixed Bugs
PATH once in Fish shell (#767, #777, #778).tool-versions file path on shim error (#749, #750)column and sort -V to list of banned commands for the asdf codebase (#661, #754)column command in favor of awk (#721)asdf shell command to help output (#715, #737)asdf env command documentation (#717)asdf plugin-add exit code (#689)Nothing published for this version
Nothing published for this version
Add support for post-plugin-add and pre-plugin-remove in plugins. Add configurable command hooks for plugin installation and removal (#670, #683)
Features
Add support for post-plugin-add and pre-plugin-remove in plugins. Add configurable command hooks for plugin installation and removal (#670, #683)
pre_asdf_plugin_remove = echo will remove plugin ${1}
pre_asdf_plugin_remove_foo = echo will remove plugin foo
post_asdf_plugin_remove = echo removed plugin ${1}
post_asdf_plugin_remove_foo = echo removed plugin foo
Use different exit code if updates are disabled (#676)
Fixed Bugs
Make sure extension commands are properly displayed by asdf help
Extension commands are now expected to be inside plugins's lib/commands/command-*.bash instead of bin/command*.
This change was made for two reasons: Keep the convention that all files to be sourced by bash should end with
the .bash extension. And the lib/commands/ directory mirrors the location of asdf own core commands.
Added tests to make sure asdf help properly displays available extension commands.
Remove automatic compinit from asdf.sh (#674, #678)
Add .bash file extension to files executed by Bash
Features
Fixed Bugs
plugin-add (#643)--unset for Fish shell (#640)Improve output format of asdf plugin list all
Features
Improve output format of asdf plugin list all
Long plugin names were causing problems with how we used printf.
Now we use the column command to properly render output.
Now asdf plugin list can take both --urls and --refs options.
When --url is used, we print the plugin's remote origin URL.
While --refs prints the git branch/commit the plugin is at.
It's now possible to update a plugin to an specific branch/commit.
asdf plugin update <name> [git-ref]
Checkouts a plugin to the specified git-ref. Defaults to master
Now the asdf plugin test command can be specified with a plugin commit/branch to test.
This will help CI checks to actually test the commit they are running for.
Previously we always used the plugin's master branch.
Subcommand CLI support.
Users familiar with sub-command aware tools like git can now
use asdf commands in the same way. For example:
asdf plugin list all is equivalent to asdf plugin-list-all
This is also the case for plugin extension commands, where the
plugin name is an asdf main subcommand. ie. Having a foo plugin
you can invoke: asdf foo bar
Make asdf plugin test use the new asdf latest command. (#541)
If a plugin version is not given explicitly, we use asdf latest to
obtain the version of plugin to install for testing.
asdf --version displays git revision when asdf_dir is a git clone.
This will allow better bug reports since people can now include the git commit they are using.
Add support for asdf extension commands.
Plugins can provide bin/command* scripts or executables that will
be callable using the asdf command line interface.
See docs/plugins-create.md for more info.
Add support for installing the latest stable version of a tool (#216)
asdf install python latest
asdf install python latest:3.7 # installs latest Python 3.7 version
Add asdf latest command to display the latest stable version of a tool (#575)
asdf latest python
asdf latest python 3.7 # displays latest Python 3.7 version
Add support for filtering versions returned by asdf list-all
asdf list-all python 3.7 # lists available Python 3.7 versions
Add AppVeyor config for builds on Windows, for eventual Windows support (#450, #451)
Features
--unset flag to shell command (#563)Fixed Bugs
path:... versions are handled correctly (#559, #591)Improve docs for Homebrew (#553, #554)
Features
Fixed Bugs
PATH variable in asdf env environment (#543, #560)asdf plugin-test dependency on Git when installed via Homebrew (#509, #556)Make asdf install check for versions in legacy files (#533, #539)
Features
asdf install check for versions in legacy files (#533, #539)Fixed Bugs
ls (#525)Add unit tests for untested code in asdf.sh and asdf.fish (#286, #507, #508)
Features
Fixed Bugs
ls (#513)Add documentation about using multiple versions of the same plugin
Features
asdf shell command to set a version for the current shell (#480)Fixed Bugs
fish_user_pathsexec (#502)Shims can be invoked directly via asdf exec [args...] without requiring to have all shims on path (#374).
Features
Shims can be invoked directly via asdf exec <command> [args...] without requiring to have all shims on path (#374).
New asdf env <command> can be used to print or execute with the env that would be used to execute a shim. (#435)
Configurable command hooks from .asdfrc (#432, #434)
Suppose a foo plugin is installed and provides a bar executable,
The following hooks will be executed when set:
pre_asdf_install_foo = echo will install foo version ${1}
post_asdf_install_foo = echo installed foo version ${1}
pre_asdf_reshim_foo = echo will reshim foo version ${1}
post_asdf_reshim_foo = echo reshimmed foo version ${1}
pre_foo_bar = echo about to execute command bar from foo with args: ${@}
post_foo_bar = echo just executed command bar from foo with args: ${@}
pre_asdf_uninstall_foo = echo will remove foo version ${1}
post_asdf_uninstall_foo = echo removed foo version ${1}
New shim version meta-data allows shims to not depend on a particular plugin
nor on its relative executable path (#431)
Upgrading requires shim re-generation and should happen automatically by asdf-exec:
rm -rf ~/.asdf/shims/ followed by asdf reshim
Added lots of tests for shim execution.
We now make sure that shim execution obeys plugins hooks like list-bin-paths and
exec-path.
Shims now are thin wrappers around asdf exec that might be faster
for most common use case: (versions on local .tool-versions file) but fallbacks to
slower get_preset_version_for which takes legacy formats into account.
Shim exec recommends which plugins or versions to set when command is not found.
asdf reshim without arguments now reshims all installed plugins (#407)
Add asdf shim-versions <executable> to list on which plugins and versions is a command
available. (#380, #433)
Add documentation on installing dependencies via Spack (#471)
Fixed Bugs
update command so it doesn't crash when used on Brew installations (#429, #474, #439, #436)Make which command work with any binary included in a plugin installation (#205, #382)
Features
which command work with any binary included in a plugin installation (#205, #382)Fixed Bugs
PATH (#408)list output even when version is not found (#419)Fix system logic so shims directory is removed from PATH properly (#402, #406)
Fixed Bugs
system logic so shims directory is removed from PATH properly (#402, #406).tool-versions files that don't end in a newline (#403)Make where command default to current version
Features
where command default to current version (#389)$TRAVIS_BUILD_DIR in the plugin guide (#386)--asdf-tool-version flag to plugin-test command (#381)-p flag to local command (#377)Fixed Bugs
current command when multiple versions are set (#401)plugin-test command (#379)current command output (#371)Add support for ASDF_DATA_DIR environment variable (#275, #335, #361, #364, #365)
Features
ASDF_DATA_DIR environment variable (#275, #335, #361, #364, #365)Fixed Bugs
asdf current so it works when no versions are installed (#368, #353)resolve_symlink function work with relative symlinks (#370, #366)Better formatting for asdf list output (#330, #331)
Features
asdf list output (#330, #331)Fixed Bugs
cd in asdf.sh (#333, #334)Changed exit codes for shims so we use codes with special meanings when possible (#305, #310)
Features
asdf list with no arguments should list all installed versions of all plugins (#311)Fixed Bugs
Suggest action when no version is set (#291, #293)
Features
Fixed Bugs
$PATH (#288, #303, #304)ASDF_CONFIG_FILE environment variable name (#300)asdf current so it shows environment variables that are setting versions (#292, 294)Add support for ASDF_DEFAULT_TOOL_VERSIONS_FILENAME environment variable (#201, #228)
Features
ASDF_DEFAULT_TOOL_VERSIONS_FILENAME environment variable (#201, #228)PATH once (#261, #271)--urls flag to plugin-list commands (#273)Fixed Bugs
grep command caused version command to look at the wrong tool when reporting the version (#262)asdf install will also search for .tool-versions in parent directories
Features
asdf install will also search for .tool-versions in parent directories (#237)Fixed Bugs
sed caused shims and .tool-versions to be duplicated with -e (#242, #250)asdf list now outputs ref-versions as used on .tool-versions file (#243)asdf update will explicitly use the origin remote when updating tags (#231)Add CONTRIBUTING guidelines and GitHub issue and pull request templates
Features
plugin-list-all command to list plugins from asdf-plugins repo. (#221)asdf current shows all current tool versions when given no args (#219)Fixed Bugs
.tool-versions file (#224)--version functionality so it works regardless of how asdf was installed (#198)Your coding agent can read these notes before it upgrades. Set up the MCP server →