v2026.4.6
jdx/misev2026.4.6Apr 8, 2026by mise-en-dev
AI Summary
Adds Tera template support to `.miserc.toml`, fixes a shim race condition, and improves SPM backend compatibility with self-hosted instances.
Key Highlights
- Tera templates can now be used in `.miserc.toml`.
- Shim race condition with overlapping backends is fixed.
- SPM backend now supports self-hosted GitHub Enterprise and GitLab instances.
New Features
- Tera template support in `.miserc.toml`
- `sing-box` added to the built-in registry
Full Release Notes
This release adds Tera template support to `.miserc.toml` files for dynamic early-stage configuration, fixes a race condition during shim creation that affected multi-backend setups, and improves SPM backend compatibility with self-hosted GitHub Enterprise and GitLab instances. Several other bug fixes improve environment variable handling across tasks, redaction, and the vfox backend.
## Highlights
- **Tera templates in `.miserc.toml`** -- Use environment variables, XDG directories, and OS-level functions like `arch()` and `os()` directly in your `.miserc.toml` configuration, enabling dynamic early-stage settings such as platform-specific ceiling paths.
- **Shim race condition fixed** -- Multi-backend setups where different plugins provide overlapping shims no longer intermittently fail during `mise reshim` or `mise install`.
- **SPM self-hosted instance support** -- The SPM backend now automatically derives the correct API URL for self-hosted GitHub Enterprise and GitLab instances from the tool URL.
## Added
- **Tera template support in `.miserc.toml`** -- `.miserc.toml` files now support Tera templates with a limited context available during early initialization: OS environment variables, `config_root`, `cwd`, XDG directories, and built-in functions/filters. Templates that fail to render gracefully fall back to raw content. [#8867](https://github.com/jdx/mise/pull/8867) by @richardthe3rd
```toml
# .miserc.toml
ceiling_paths = ["{{ env.HOME }}"]
ignored_config_paths = ["{{ xdg_config_home }}/mise/shared.toml"]
```
- **`sing-box` added to the built-in registry** -- Install the sing-box universal proxy platform via `mise use sing-box`. [#8944](https://github.com/jdx/mise/pull/8944) by @tony-sol
## Fixed
- **Shim race condition with overlapping backends** -- When multiple plugins provide the same shim (e.g., `nodejs` via the default registry and `asdf:nodejs`), concurrent `make_shim` calls could race on file removal, producing intermittent "No such file or directory" errors. The file removal now tolerates already-deleted files. [#8947](https://github.com/jdx/mise/pull/8947) by @brander-john
- **`mise env --redacted` missing tools-only redactions** -- Env vars declared with both `tools = true` and `redact = true` were not included in the redaction filter for `mise env --redacted`. Both the standard and tools-only redaction sets are now checked. [#8956](https://github.com/jdx/mise/pull/8956) by @jakedgy
- **SPM backend API URL for self-hosted instances** -- When using the SPM backend with a full URL pointing to a self-hosted GitHub Enterprise or GitLab instance, mise now derives the correct API URL from the host instead of always falling back to `api.github.com`. Explicit `api_url` options still take precedence. [#8955](https://github.com/jdx/mise/pull/8955) by @ThomasDutartre
- **vfox backend missing dependency env** -- When a vfox backend plugin declared `depends` on another tool, the dependency's binaries were not available on PATH during plugin Lua hooks (`BackendListVersions`, `BackendInstall`, `BackendExecEnv`). Dependency environment is now properly propagated, matching the behavior of other backends. [#8952](https://github.com/jdx/mise/pull/8952) by @cprecioso
- **Task usage Tera templates failing with flags** -- Task `usage` field defaults using `{{ env.VAR }}` Tera templates would fail with "Variable not found in context" whenever any flags were passed. The task argument parser now uses the full computed environment instead of an empty map. [#8957](https://github.com/jdx/mise/pull/8957) by @jdx
- **Clarified attestation settings placement** -- The help messages for Python and Ruby attestation settings now specify that they must be placed under `[settings]` in `mise.toml`, not under `[python]` or `[ruby]` where they are silently ignored. [#8939](https://github.com/jdx/mise/pull/8939) by @fru1tworld
## New Contributors
* @ThomasDutartre made their first contribution in [#8955](https://github.com/jdx/mise/pull/8955)
* @jakedgy made their first contribution in [#8956](https://github.com/jdx/mise/pull/8956)
* @brander-john made their first contribution in [#8947](https://github.com/jdx/mise/pull/8947)
* @fru1tworld made their first contribution in [#8939](https://github.com/jdx/mise/pull/8939)
**Full Changelog**: https://github.com/jdx/mise/compare/v2026.4.5...v2026.4.6