jdx/mise · error
incoming history.origin is machine-local configuration…
Error message
incoming history.origin is machine-local configuration; remove it from the shared setup and use `mise dot origin set` on this machine ({}) What it means
Thrown in prospective preflight when an incoming shared configuration file declares a `[history]` section with an `origin` key. history.origin is machine-local (it points at where history is stored on this machine), so it must never be distributed via the shared setup; mise blocks the whole batch to prevent one machine's local path being applied to others.
Solutions
- Remove the `origin` key (or the whole `[history]` section) from the shared file and commit the fix
- Keep history.origin in a machine-local, non-shared config file instead
- On the affected machine run `mise dot origin set` to configure origin locally
- Pull again after the shared setup is corrected
Example fix
# before (shared mise.toml) [history] origin = "/home/alice/.local/share/mise/history" # after # remove the [history] section; run `mise dot origin set` locally instead
Defensive patterns
Strategy: validation
Validate before calling
grep -n '^origin' shared/mise.toml && echo "remove machine-local history.origin from the shared file" || echo ok
Prevention
- Keep machine-local settings like history.origin in a non-shared, gitignored config
- Run `mise dot origin set` locally instead of writing origin into shared files
- Add a pre-commit check that rejects `[history] origin` in shared config files
When it happens
Trigger: A checked-in config file (e.g. the shared mise.toml) contains `[history]` with `origin = "..."`; prospective() parses the incoming file via MiseToml::for_history_preflight and detects the key.
Common situations: A user set history.origin in their local config and then committed the whole file to the shared repo; copy-pasting a personal config into the shared setup.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- {}: {}
- incoming configuration must be a regular file
- incoming setup deletes required source
- incoming setup is missing required source
- required source is not a regular file
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/ff679bec1e00a24e.
Report an issue: GitHub.
Appendix: source
Thrown at src/system/history/sync/preflight.rs:62
{
continue;
}
let Some((mode, oid)) = object else {
continue;
};
if mode != "100644" && mode != "100755" {
bail!(
"incoming configuration must be a regular file: {}",
path.display()
);
}
let body = String::from_utf8(repo.cat_object(oid)?)?;
let parsed = MiseToml::for_history_preflight(&body, path)?;
if parsed
.history_config()
.is_some_and(|history| history.origin.is_some())
{
bail!(
"incoming history.origin is machine-local configuration; remove it from the shared setup and use `mise dot origin set` on this machine ({})",
path.display()
);
}
incoming_files.insert(
path.clone(),
Arc::new(parsed) as Arc<dyn crate::config::config_file::ConfigFile>,
);
}
crate::system::files::validate_incoming_files(&incoming_files)?;
let global = match &*crate::env::MISE_GLOBAL_CONFIG_FILE {
Some(path) => vec![path.clone()].into_iter().collect(),
None => candidates,
};
let mut files = ConfigMap::new();
let mut excludes = vec![];
for path in crate::config::system_config_files()
.into_iter()View on GitHub (pinned to 533346cc37)