astrid-runtime/astrid · error

authenticated FSKit lifecycle update failed with

Error message

authenticated FSKit lifecycle update failed with {status}

What it means

install_authenticated_macos_assets runs the privileged FSKit lifecycle helper (manage-macos-fskit.sh via the manager binary) and requires it to exit successfully. When the helper's exit status is non-zero, this error reports the raw status so the user knows the authenticated macOS lifecycle update did not apply.

Solutions

  1. Re-run the self-update with elevated permissions (sudo) so the lifecycle helper can operate
  2. Run the helper script manually (sudo manage-macos-fskit.sh) to see its detailed stderr
  3. Check Console/system logs for FSKit errors on macOS
  4. Verify the installed helper script matches the release version and reinstall if corrupted

Example fix

// before
astrid self-update
// after
sudo astrid self-update
Defensive patterns

Strategy: try-catch

Validate before calling

let out = Command::new(&manager).arg("--check").output()?;
anyhow::ensure!(out.status.success(), "FSKit helper preflight failed: {}", String::from_utf8_lossy(&out.stderr));

Try / catch

let status = run_helper(&manager)?;
if !status.success() {
    eprintln!("helper failed with {status}; check sudo privileges and macOS FSKit logs");
    std::process::exit(status.code().unwrap_or(1));
}

Prevention

When it happens

Trigger: install_authenticated_macos_assets executing the macOS FSKit manager tool which exits non-zero — e.g. helper lacks root privileges, FSKit operations fail, or the script encounters an error during the lifecycle update.

Common situations: Running self-update without sudo when the helper needs root; macOS FSKit/SIP state preventing the lifecycle change; a broken or incompatible helper script after an OS upgrade.

Understand the failure class

Related errors


AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09). Data as JSON: /api/errors/5ec8368ff3316441. Report an issue: GitHub.

Appendix: source

Thrown at crates/astrid-cli/src/commands/self_update/mod.rs:472

}
fn install_authenticated_macos_assets(
    extract_dir: &Path,
    install_dir: &Path,
) -> anyhow::Result<()> {
    let manager = extract_dir.join("macos/manage-macos-fskit.sh");
    let status = std::process::Command::new("/bin/bash")
        .arg(&manager)
        .arg("update")
        .env("PATH", "/usr/bin:/bin:/usr/sbin:/sbin")
        .env("ASTRID_FSKIT_BIN_DIR", install_dir)
        .status()
        .with_context(|| {
            format!(
                "run authenticated FSKit lifecycle tool {}",
                manager.display()
            )
        })?;
    anyhow::ensure!(
        status.success(),
        "authenticated FSKit lifecycle update failed with {status}"
    );
    Ok(())
}
fn apply_authenticated_update<F>(
    install_dir: &Path,
    extract_dir: &Path,
    target: &str,
    install_native_assets: F,
) -> anyhow::Result<()>
where
    F: FnOnce(&Path, &Path) -> anyhow::Result<()>,
{
    prepare_macos_update_assets(extract_dir, target)?;
    let managed = managed_binaries_for_target(target);
    let previously_present = managed
        .iter()

View on GitHub (pinned to affd8760f4)