jdx/mise · critical
stdin piped
Error message
stdin piped
What it means
To read OCI registry credentials, mise spawns a docker credential helper (configured via credHelpers/credsStore in docker config.json) with stdin piped, then takes child.stdin with this expect. After a successful spawn with Stdio::piped, take() cannot return None, so this is an internal stdio-wiring invariant rather than a user-facing condition.
Source
Thrown at src/oci/auth.rs:256
"https://index.docker.io/v1/"
} else {
registry
};
debug!("running {bin} get for {server}");
let mut command = Command::new(&bin);
command
.arg("get")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::piped());
prepare_noninteractive_child(&mut command);
let mut child = command
.spawn()
.wrap_err_with(|| format!("spawning {bin} (from credHelpers/credsStore)"))?;
let _running_pid = RunningPidGuard::new(Some(child.id()));
{
use std::io::Write;
let mut stdin = child.stdin.take().expect("stdin piped");
stdin.write_all(server.as_bytes())?;
}
let out = child.wait_with_output()?;
if !out.status.success() {
bail!(
"{bin} get failed for {server}: {}",
String::from_utf8_lossy(&out.stderr).trim()
);
}
#[derive(Deserialize)]
struct HelperResponse {
#[serde(rename = "Username")]
username: String,
#[serde(rename = "Secret")]
secret: String,
}
let resp: HelperResponse = serde_json::from_slice(&out.stdout)
.wrap_err_with(|| format!("parsing {bin} get output"))?;View on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Update mise and, if it persists, report with RUST_BACKTRACE=1 and your docker config.json credHelpers/credsStore configuration
- As a workaround, remove or simplify the credHelpers/credsStore entry so plain credential files are used
Defensive patterns
Strategy: try-catch
Try / catch
Treat this panic as an upstream defect: run mise as a subprocess, capture the 101 exit + backtrace, simplify docker config.json's credHelpers/credsStore as a workaround, and report.
Prevention
- Keep docker config.json credential helper entries pointed at real, working helper binaries
- Pin mise versions in OCI build pipelines
When it happens
Trigger: Performing OCI registry authentication that resolves a credential helper, in an exotic environment where the piped stdin handle is somehow absent or already consumed internally — only reachable via a mise bug or unusual stdio tampering.
Common situations: Practically never; would show up only in crash reports in sandboxed environments that manipulate file descriptors.
Related errors
- inline content
- {bin} get failed for {server}: {}
- apk failed while installing OCI system packages: {} {}
- apt-get failed while installing OCI system packages: {} {}
- privileged path inspection returned an unexpected result cou
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/f6748d2ee30e01e8.
Report an issue: GitHub.