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
- Use template = "tera" (lowercase, exact)
- Drop template entirely for literal content — rendering is then skipped
- 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
- Use template = "tera" exactly (lowercase); omit the key for literal content
- Pre-render content with other engines and reference the result via source =
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
- path "{path_raw}" must be absolute or start with ~/, ignorin
- "{path_raw}".{id:?}: ids may only contain letters, digits, '
- "{path_raw}".{id}: block/source and line are mutually exclus
- "{path_raw}".{id}: no recognized operation (block, source, o
- "{path_raw}".{id}: block and source are mutually exclusive,
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/83fc765a96cc1bab.
Report an issue: GitHub.