{"record":{"id":"5ec8368ff3316441","repo":"astrid-runtime/astrid","slug":"authenticated-fskit-lifecycle-update-failed-with","errorCode":null,"errorMessage":"authenticated FSKit lifecycle update failed with {status}","messagePattern":"authenticated FSKit lifecycle update failed with (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/astrid-cli/src/commands/self_update/mod.rs","lineNumber":472,"sourceCode":"}\nfn install_authenticated_macos_assets(\n    extract_dir: &Path,\n    install_dir: &Path,\n) -> anyhow::Result<()> {\n    let manager = extract_dir.join(\"macos/manage-macos-fskit.sh\");\n    let status = std::process::Command::new(\"/bin/bash\")\n        .arg(&manager)\n        .arg(\"update\")\n        .env(\"PATH\", \"/usr/bin:/bin:/usr/sbin:/sbin\")\n        .env(\"ASTRID_FSKIT_BIN_DIR\", install_dir)\n        .status()\n        .with_context(|| {\n            format!(\n                \"run authenticated FSKit lifecycle tool {}\",\n                manager.display()\n            )\n        })?;\n    anyhow::ensure!(\n        status.success(),\n        \"authenticated FSKit lifecycle update failed with {status}\"\n    );\n    Ok(())\n}\nfn apply_authenticated_update<F>(\n    install_dir: &Path,\n    extract_dir: &Path,\n    target: &str,\n    install_native_assets: F,\n) -> anyhow::Result<()>\nwhere\n    F: FnOnce(&Path, &Path) -> anyhow::Result<()>,\n{\n    prepare_macos_update_assets(extract_dir, target)?;\n    let managed = managed_binaries_for_target(target);\n    let previously_present = managed\n        .iter()","sourceCodeStart":454,"sourceCodeEnd":490,"githubUrl":"https://github.com/astrid-runtime/astrid/blob/affd8760f44190dbdfbec23403f4c4b642c33112/crates/astrid-cli/src/commands/self_update/mod.rs#L454-L490","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nastrid self-update\n// after\nsudo astrid self-update","handlingStrategy":"try-catch","validationCode":"let out = Command::new(&manager).arg(\"--check\").output()?;\nanyhow::ensure!(out.status.success(), \"FSKit helper preflight failed: {}\", String::from_utf8_lossy(&out.stderr));","typeGuard":null,"tryCatchPattern":"let status = run_helper(&manager)?;\nif !status.success() {\n    eprintln!(\"helper failed with {status}; check sudo privileges and macOS FSKit logs\");\n    std::process::exit(status.code().unwrap_or(1));\n}","preventionTips":["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"],"tags":["macos","process-exit","privileged-operation"],"backgroundTag":"command-exit-nonzero","analyzedSha":"affd8760f44190dbdfbec23403f4c4b642c33112","analyzedAt":"2026-09-09T21:28:12.402Z","contentChangedAt":"2026-09-09T21:28:12.402Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}