jdx/mise · error

history is disabled (history.enabled = false)

Error message

history is disabled (history.enabled = false)

What it means

Thrown by the dotfiles `save` command when history is disabled (`history.enabled = false` in settings). Saving captured dotfile edits into history requires the history feature, so the command aborts with the setting named in the message.

Source

Thrown at src/cli/dotfiles/save.rs:73

        match self.capture(store, tracked, draft) {
            Ok(()) => Ok(()),
            Err(err) if self.best_effort => {
                warn!("history save: {err:#}");
                Ok(())
            }
            Err(err) => Err(err),
        }
    }

    async fn save(self) -> Result<()> {
        let trigger = match self.trigger.as_str() {
            "save" => Trigger::Save,
            "agent" => Trigger::Agent,
            "update" => Trigger::Update,
            other => bail!("unknown trigger {other:?}; use save, agent, or update"),
        };
        if !crate::config::Settings::get().history.enabled {
            bail!("history is disabled (history.enabled = false)");
        }
        let (store, tracked, entries) = super::history::open().await?;
        if !self.paths.is_empty() {
            let walk = tracked.walk()?;
            for path in &self.paths {
                let path = normalize_target(path);
                let captured = walk.files.keys().any(|file| file.starts_with(&path));
                if !captured {
                    // saving a deleted manual-save path saves the deletion,
                    // provided the path was captured before (a path that
                    // never existed is not a deletion)
                    let deletion = tracked
                        .entry_for(&path)
                        .is_some_and(|entry| !entry.policy.autosave)
                        && std::fs::symlink_metadata(&path)
                            .is_err_and(|err| err.kind() == std::io::ErrorKind::NotFound)
                        && previously_captured(&store, &entries, &path)?;
                    if deletion {

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Enable history: set `history.enabled = true` in mise settings
  2. Verify with `mise settings get history.enabled` before calling save
  3. Remove or guard the save call in scripts when history is intentionally disabled

Example fix

// before (config.toml)
[history]
enabled = false
// after
[history]
enabled = true
Defensive patterns

Strategy: validation

Validate before calling

[ "$(mise settings get history.enabled)" = "true" ] || { echo "enable history first" >&2; exit 1; }
mise bootstrap dotfiles save --trigger save

Prevention

When it happens

Trigger: Running `mise bootstrap dotfiles save` (any trigger) while `Settings::get().history.enabled` is false.

Common situations: Users who disabled history for disk space or privacy but still call save from scripts/automation; configs where history.enabled was set false after previously using dotfiles save.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/dac1dc32e00f90b2. Report an issue: GitHub.