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

  1. Update mise and, if it persists, report with RUST_BACKTRACE=1 and your docker config.json credHelpers/credsStore configuration
  2. 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

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


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