paperclipai/paperclip · error · io::Error

could not allocate a runner diagnostic temporary file

Error message

could not allocate a runner diagnostic temporary file

What it means

Guard in the diagnostics temp-file writer in paperclip-runnerd: after exhausting candidate temp file names (each open returning AlreadyExists), no unique temporary file could be created in the diagnostics directory. This is the allocation loop's give-up path — the directory is likely full of stale temp files, full on disk, or has restrictive permissions.

Source

Thrown at packages/paperclip-runner/runner/crates/runner-core/src/bin/paperclip-runnerd.rs:92

        #[cfg(unix)]
        options.mode(0o600);
        let mut file = match options.open(&temporary) {
            Ok(file) => file,
            Err(error) if error.kind() == io::ErrorKind::AlreadyExists => continue,
            Err(error) => return Err(error),
        };
        let write_result = (|| {
            file.write_all(contents.as_bytes())?;
            file.sync_all()?;
            drop(file);
            fs::rename(&temporary, &destination)
        })();
        if write_result.is_err() {
            let _ = fs::remove_file(&temporary);
        }
        return write_result;
    }
    Err(io::Error::new(
        io::ErrorKind::AlreadyExists,
        "could not allocate a runner diagnostic temporary file",
    ))
}

fn install_diagnostic_panic_hook(directory: Option<PathBuf>) {
    let Some(directory) = directory else {
        return;
    };
    std::panic::set_hook(Box::new(move |panic| {
        let _ = persist_runner_diagnostic(&directory, &format!("paperclip-runnerd panic: {panic}"));
    }));
}

fn install_crypto_provider() {
    // The production dependency graph enables both rustls crypto backends.
    // Select the backend declared by this workspace before any TLS builder
    // asks rustls for the process-level default. An embedding process may have

View on GitHub (pinned to 01ad858492)

Solutions

  1. Clear stale temporary files left in the diagnostics directory
  2. Check disk space and inode availability on the diagnostics filesystem
  3. Verify the runnerd process owns or can write to the diagnostics directory
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at packages/paperclip-runner/runner/crates/runner-core/src/bin/paperclip-runnerd.rs:92 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/36c778eb129ced28. Report an issue: GitHub.