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
- Re-run the self-update with elevated permissions (sudo) so the lifecycle helper can operate
- Run the helper script manually (sudo manage-macos-fskit.sh) to see its detailed stderr
- Check Console/system logs for FSKit errors on macOS
- 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
- Run self-update with elevated permissions when the lifecycle helper needs root
- Capture and log the helper's stderr for diagnosis
- Check macOS FSKit/SIP state after OS upgrades
- Keep the helper script version-matched to the CLI release
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
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
Related errors
- authenticated AstridFS.app is redirected or not a directory
- authenticated macOS lifecycle tool is redirected or not…
- clone dest path has NUL
- clone source path has NUL
- FSKit service parent process is not alive
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)