SCDynamicStore and NWPathMonitor event-driven change detection replacing fixed-interval probing
Parent: Mac App Store Readiness: Residual Gaps for Sandboxed Monitors · Published reference · snapshot 2026-10-02
↓ Facts as markdownall context files
Source-anchored research for SCDynamicStore and NWPathMonitor event-driven change detection replacing fixed-interval probing. Run status: COMPLETED.
These notes link each claim to its source. Some citations identify archived research reports that are no longer hosted on this site. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.
How it works
- NWPathMonitor reports path status (satisfied, unsatisfied, requiresConnection), interface types, isExpensive/isConstrained, and supportsIPv4/supportsIPv6/supportsDNS; it calls pathUpdateHandler on the monitor's dispatch queue when the path changes. (medium confidence) [source]
- In one third-party sandbox (Claude Code's profile, not the Mac App Store App Sandbox), SCDynamicStoreCreate returned NULL because the Mach service com.apple.SystemConfiguration.configd was blocked; this shows SCDynamicStore depends on configd IPC but says nothing definitive about App Sandbox. (low confidence) (verified as of 2026-10-02) [source]
Comparisons and alternatives
- Apple DTS (2018) says both SCNetworkReachability and NWPathMonitor can give false positives and false negatives and suffer TOCTTOU, so use path events as a hint and confirm with a real operation rather than gating behavior on them. (low confidence) [source]
Facts and statements
- SCDynamicStore change detection from Python: create a store with a callback, call SCDynamicStoreSetNotificationKeys for keys like State:/Network/Global/IPv4 and State:/Network/Global/IPv6, add the store's run-loop source to a CFRunLoop; under PyObjC the context argument is an arbitrary Python object. (medium confidence) [source]
Children
- No children recorded.