Add option to stop shimming packages installed with tools managed by asdf
Is your feature request related to a problem? Please describe
With asdf v0.14, I don't believe asdf shimmed executables that I did not explicitly tell it to shim. Now, asdf v0.18 is automatically shimming packages installed by go, npm, etc. This has created a headache for me as I had specific tools on my path which were generated by specific versions of go, node, etc. I specifically want to use a single tool version's package globally, for everything. The auto-shimming behavior of asdf v0.18 breaks this.
See related issues that could also be resolved by providing an option to restore the old behavior:
- https://asdf-vm.com/more/faq.html#why-is-a-command-completely-unrelated-to-the-plugins-i-m-using-is-getting-shimmed-by-asdf
- https://github.com/asdf-vm/asdf/issues/584
- https://github.com/asdf-vm/asdf/issues/1955
EDIT: this may not be related to asdf v0.18 vs v0.14..., I am seeing python packages are shimmed by asdf v0.14. Maybe this is related to the plugins? I am not seeing go or npm packages being shimmed by v0.14
Describe the proposed solution
I would like to see some config option to restore the asdf v0.14 behavior and stop shimming packages installed by tools managed by asdf.
Describe similar asdf features and why they are not sufficient
N/A
Describe other workarounds you've considered
I have to delete the shims and copy the executables I want to use globally out to shared bin folders like ~/.local/bin
OMG +1. Also, I'm currently stuck with asdf - I can't run uvicorn (python web server install via pip), claude (agentic llm installed via npm) right now ... how do I fix this?
There are a lot of issues around this exact behavior. Curious what the decision is on how to best handle this.
Here's a simple scenario:
User installs 2 versions of python using asdf-python plugin and sets the python version in a .tool-versions file.
The user then creates and activates a virtual environment. Using pip the user installs a package inside the virtual environment, which contains some executable that asdf shims. The user expects that the executable can be located when they are in the virtual environment:
$ (.venv) which myexecutable
...path/to/.venv/lib/site-packages/mypackage/myexecutable.bin
But upon deactivating the virtual environment, the user expects that the executable should not be found (no myexecutable in... etc). Instead, asdf` takes over:
$ which myexecutable
No version is set for command myexecutable
Consider adding one of the following versions in your config file at /path/to/.tool-versions
The user expects only python or nodejs etc to have this behavior with asdf, but it starts popping up all over their system.
Some more issues in addition to the ones listed in original issue above:
- https://github.com/asdf-vm/asdf/issues/1653
- https://github.com/asdf-community/asdf-python/issues/187
This is also mentioned in the asdf FAQ.
- Is there is any plan to change this functionality or address the negative issues it causes?
- Are users that are experiencing this issue doing something wrong?
Any clarity on this would be appreciated! Thank you!
I have this problem as well. running claude or codex, i'll regularly get a shim that shows up pointing at a VERY old version of claude or codex, instead of my global one. It's missing all my config, pointing at an old model, and it looks similar in the UI so it's not immediately obvious, and that causes me to have to stop and restart all the time. I guess I'm going to look at moving to mise to see if that doesn't have this problem. but my tooling and setup is based on ASDF so it's a real pain to move.