astrid-runtime/astrid · error
macOS did not activate an astridfs mount at {}
Error message
macOS did not activate an astridfs mount at {} What it means
After issuing the native macOS mount command, validate_mounted_mountpoint() re-checks that the filesystem actually activated at the path via native_mount_is_active(); if the OS did not report an active astridfs mount there, the provider bails rather than claiming success on a silent mount failure.
Source
Thrown at crates/astrid-storage-provider-fskit/src/main.rs:491
validate_mountpoint_layout(mountpoint)?;
validate_mountpoint_ancestors(mountpoint)?;
astrid_core::platform_fs::verify_no_redirects(mountpoint)
.with_context(|| format!("reject redirected mountpoint {}", mountpoint.display()))?;
astrid_core::platform_fs::validate_private_directory(mountpoint)
.with_context(|| format!("reject unsafe mountpoint {}", mountpoint.display()))?;
if std::fs::read_dir(mountpoint)?.next().is_some() {
bail!("mountpoint is not empty: {}", mountpoint.display());
}
Ok(())
}
fn validate_mounted_mountpoint(mountpoint: &Path) -> Result<()> {
validate_mountpoint_layout(mountpoint)?;
validate_mountpoint_ancestors(mountpoint)?;
astrid_core::platform_fs::verify_no_redirects(mountpoint)
.with_context(|| format!("reject redirected mountpoint {}", mountpoint.display()))?;
if !native_mount_is_active(mountpoint)? {
bail!(
"macOS did not activate an astridfs mount at {}",
mountpoint.display()
);
}
Ok(())
}
#[cfg(unix)]
fn validate_mountpoint_ancestors(mountpoint: &Path) -> Result<()> {
use std::os::unix::fs::MetadataExt as _;
let mut ancestor = mountpoint.parent();
while let Some(path) = ancestor {
let metadata = std::fs::symlink_metadata(path)
.with_context(|| format!("inspect mountpoint ancestor {}", path.display()))?;
let mode = metadata.mode();
if mode & 0o022 != 0 && mode & 0o1000 == 0 {
bail!(View on GitHub (pinned to affd8760f4)
Solutions
- Check macOS logs (console/fskitd/diskimages-helper) for why the mount did not activate.
- Verify with `mount` that the astridfs volume is absent, fix the daemon/entitlement problem, and retry the mount.
- Ensure the mountpoint was not replaced or symlinked between command and validation.
- Retry the mount if activation is slow; if it fails deterministically, reinstall matched kernel/provider versions.
Defensive patterns
Strategy: try-catch
Try / catch
if let Err(e) = validate_mounted_mountpoint(&mountpoint) {
if e.to_string().contains("did not activate an astridfs mount") {
// inspect macOS logs, retry mount once after a short delay, else fail loudly
}
} Prevention
- Keep the fskit daemon and its entitlements healthy; monitor for crashes.
- After mount, allow a brief settle delay before asserting activation in tests.
- Ensure the mountpoint path is not replaced or symlinked during the mount sequence.
- Pin kernel and daemon versions together so activation semantics do not drift.
When it happens
Trigger: Called from mount() right after running the native mount command, and from the round-trip test; fires when the mount command exited 0 but the mount never appeared — daemon crashed after handshake, mountpoint got swapped, or activation was reversed before the check.
Common situations: fskit daemon killed by sandbox policy after accepting the mount; macOS unmounting the volume immediately due to conflicting mount flags; the mountpoint path changed between command and validation; slow activation racing the immediate validation.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- native_mount_failure_message(classify_native_mount_failure(o
- the FSKit provider is available only on macOS
- FSKit service parent process is not alive
- mountpoint is not empty: {}
- macOS unmount failed with {status}
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/c2fd6dc3a02eb08d.
Report an issue: GitHub.