v2026.3.15

jdx/misev2026.3.15Mar 25, 2026by mise-en-dev

AI Summary

Introduces a custom credential command for GitHub tokens and adjusts token resolution priority.

Key Highlights

  • New `github.credential_command` setting for secret managers like 1Password and Vault.
  • Token resolution priority raised above file-based sources (`github_tokens.toml` and gh CLI).

New Features

  • Custom GitHub credential command setting

Full Release Notes

This release adds a new `github.credential_command` setting that lets you plug any external secret manager into mise's GitHub token resolution, and adjusts its priority so it takes precedence over file-based token sources.

## Added

- **`github.credential_command` setting for custom token retrieval** -- You can now configure a shell command that mise runs to obtain a GitHub token, enabling integration with secret managers like 1Password, HashiCorp Vault, or any custom script. The command is executed via `sh -c` and receives the hostname as `$1`, so it can return different tokens for github.com and GitHub Enterprise instances. Results are cached per host per session. [#8746](https://github.com/jdx/mise/pull/8746) by @jdx

  ```toml
  [settings.github]
  credential_command = "op read 'op://Private/GitHub Token/credential'"
  ```

  This can also be set via the `MISE_GITHUB_CREDENTIAL_COMMAND` environment variable.

## Changed

- **`credential_command` priority raised above file-based sources** -- Since `credential_command` is an explicit user configuration, it now takes priority over `github_tokens.toml` and the gh CLI's `hosts.yml`. Previously it sat at the bottom of the resolution order alongside `git credential fill`. The `git credential fill` fallback remains as the lowest-priority option and is no longer blocked when `credential_command` is set but returns no token. [#8748](https://github.com/jdx/mise/pull/8748) by @jdx

  Updated token priority for github.com:

  | # | Source |
  |---|--------|
  | 1 | `MISE_GITHUB_TOKEN` env var |
  | 2 | `GITHUB_API_TOKEN` env var |
  | 3 | `GITHUB_TOKEN` env var |
  | 4 | `credential_command` (if set) -- **new** |
  | 5 | `github_tokens.toml` (per-host) |
  | 6 | gh CLI token (from `hosts.yml`) |
  | 7 | `git credential fill` (if enabled) |

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.3.14...v2026.3.15