jdx/mise · warning · eyre::Report

"{path_raw}".{id}: unknown template engine '{other}' (expect

Error message

"{path_raw}".{id}: unknown template engine '{other}' (expected "tera"), ignoring entry

What it means

The optional template field of a [dotfiles] block edit names the engine used to render content. Only "tera" is supported; any other value is warned about and the entry skipped. The field is a free string precisely so configs written for newer mise versions with new engines warn and skip here instead of breaking config parsing on older versions.

Source

Thrown at src/system/edits.rs:275

                        "\"{path_raw}\".{id}: block and source are mutually exclusive, ignoring entry"
                    )
                }
                (Some(inline), None) => BlockSource::Inline(inline),
                (None, Some(src)) => {
                    let src = file::replace_path(&src);
                    BlockSource::File(if src.is_relative() {
                        base.join(src)
                    } else {
                        src
                    })
                }
                (None, None) => unreachable!("is_block"),
            };
            let template = match entry.template.as_deref() {
                None => false,
                Some("tera") => true,
                Some(other) => {
                    bail!(
                        "\"{path_raw}\".{id}: unknown template engine '{other}' (expected \"tera\"), ignoring entry"
                    )
                }
            };
            let comment = entry
                .comment
                .unwrap_or_else(|| infer_comment(&path).to_string());
            EditOp::Block {
                source,
                template,
                comment,
            }
        }
        (false, Some(line)) => {
            // a "line" is matched against the file's individual lines, so an
            // embedded newline could never converge — use a block for
            // multi-line content
            if line.contains('\n') {

View on GitHub (pinned to 9dcfcaa0dc)

Solutions

  1. Use template = "tera" (lowercase, exact)
  2. Drop template entirely for literal content — rendering is then skipped
  3. If you need a different engine, render the content before mise and reference the result via source =

Example fix

# before
[dotfiles]
"~/.gitconfig-user/name" = { block = "{{ name }}", template = "jinja" }

# after
[dotfiles]
"~/.gitconfig-user/name" = { block = "{{ name }}", template = "tera" }
Defensive patterns

Strategy: type-guard

Type guard

fn is_supported_template(v: Option<&str>) -> bool {
    matches!(v, None | Some("tera"))
}

Prevention

When it happens

Trigger: { block = '...', template = "jinja" } or template = "handlebars" in a [dotfiles] edit entry.

Common situations: Assuming mise supports the template engine from another dotfile manager; typo "Tera" with capital T; copying config from a tool that names a different engine.

Related errors


AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17). Data as JSON: /api/errors/83fc765a96cc1bab. Report an issue: GitHub.