Post

Replies

Boosts

Views

Activity

Reply to FSEvents vs Endpoint Security Framework for a macOS file-operation audit product
Hi Kevin, Thank you again for the clarification. To answer your question about the phrase “system fell behind” — that was imprecise wording on my part. What I actually meant was our own client falling behind, resulting in the kernel dropping events because our ES client could not keep up with the message rate. I wasn’t suggesting that the kernel itself was falling behind. Your explanation makes that distinction very clear, and seq_num is exactly the signal I was looking for. This clears up what I was trying to understand and gives us a much clearer direction for how we represent monitoring coverage in our audit product. We’ll use the per-client, per-event-type sequence numbers as the authoritative indicator of event loss, while recording agent lifecycle events separately rather than trying to infer a generic “system lag.” I really appreciate your guidance throughout these discussions. It has been extremely valuable in helping us build on Endpoint Security in a way that aligns with Apple’s design. Best regards, Kei
Topic: App & System Services SubTopic: Core OS Tags:
Jul ’26
Reply to FSEvents vs Endpoint Security Framework for a macOS file-operation audit product
Kevin, thank you again. This gives us a much clearer direction for both the runtime architecture and the test strategy. We will keep the initial product notify-only, perform no blocking work on the ES receive queue, move normalization and correlation to separate asynchronous processing, and build dedicated stress tools that intentionally generate extreme and adversarial event loads rather than relying only on normal-use testing. We also appreciate your insights about access denial. For the current version, we plan to keep monitoring and enforcement separate, while retaining enforcement as a possible future mode for narrowly defined protected locations. I have one final audit-specific question. For a notify-only ES client, what is the recommended way to determine whether events have been missed because the client or system fell behind? Should an audit product primarily rely on the sequencing information in es_message_t, or are there other official signals or conditions that Apple recommends recording as evidence of a monitoring coverage gap? Our goal is to avoid claiming complete coverage when the telemetry stream itself may be incomplete. Instead, we want to detect, preserve, and explicitly report any loss of monitoring coverage as part of the audit record. Thank you so much for the detailed guidance. It has materially improved our architecture.
Topic: App & System Services SubTopic: Core OS Tags:
Jul ’26
Reply to FSEvents vs Endpoint Security Framework for a macOS file-operation audit product
Hi Kevin, this is extremely helpful — thank you for the depth here. Two takeaways reshape our design: (1) using DiskArb as the primary volume API with ES as a backstop, and (2) treating "copy" as an inference rather than an observable operation. For an audit product, that pushes us toward separating observed facts (rename, clone, open — things ES reports as "true") from inferred semantics (copy, asset movement) that a correlation layer derives. We'll record and preserve the raw events and treat high-level interpretation as a distinct, clearly-labeled layer. One follow-up on running ES in production at scale. Given the message volume you describe on the notify path, is there a recommended approach for keeping an ES client responsive without dropping events — for example, using es_mute_path or related APIs, early filtering of event types, or offloading correlation from the ES callback thread? I want to make sure we don't design ourselves into a position where the client falls behind and events are lost; for an audit product, a dropped event is a gap in the record. Thanks again — this has been genuinely valuable. Kei
Topic: App & System Services SubTopic: Core OS Tags:
Jul ’26
Reply to FSEvents vs Endpoint Security Framework for a macOS file-operation audit product
Hi Kevin, Thank you again for the clarification. To answer your question about the phrase “system fell behind” — that was imprecise wording on my part. What I actually meant was our own client falling behind, resulting in the kernel dropping events because our ES client could not keep up with the message rate. I wasn’t suggesting that the kernel itself was falling behind. Your explanation makes that distinction very clear, and seq_num is exactly the signal I was looking for. This clears up what I was trying to understand and gives us a much clearer direction for how we represent monitoring coverage in our audit product. We’ll use the per-client, per-event-type sequence numbers as the authoritative indicator of event loss, while recording agent lifecycle events separately rather than trying to infer a generic “system lag.” I really appreciate your guidance throughout these discussions. It has been extremely valuable in helping us build on Endpoint Security in a way that aligns with Apple’s design. Best regards, Kei
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jul ’26
Reply to FSEvents vs Endpoint Security Framework for a macOS file-operation audit product
Kevin, thank you again. This gives us a much clearer direction for both the runtime architecture and the test strategy. We will keep the initial product notify-only, perform no blocking work on the ES receive queue, move normalization and correlation to separate asynchronous processing, and build dedicated stress tools that intentionally generate extreme and adversarial event loads rather than relying only on normal-use testing. We also appreciate your insights about access denial. For the current version, we plan to keep monitoring and enforcement separate, while retaining enforcement as a possible future mode for narrowly defined protected locations. I have one final audit-specific question. For a notify-only ES client, what is the recommended way to determine whether events have been missed because the client or system fell behind? Should an audit product primarily rely on the sequencing information in es_message_t, or are there other official signals or conditions that Apple recommends recording as evidence of a monitoring coverage gap? Our goal is to avoid claiming complete coverage when the telemetry stream itself may be incomplete. Instead, we want to detect, preserve, and explicitly report any loss of monitoring coverage as part of the audit record. Thank you so much for the detailed guidance. It has materially improved our architecture.
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jul ’26
Reply to FSEvents vs Endpoint Security Framework for a macOS file-operation audit product
Hi Kevin, this is extremely helpful — thank you for the depth here. Two takeaways reshape our design: (1) using DiskArb as the primary volume API with ES as a backstop, and (2) treating "copy" as an inference rather than an observable operation. For an audit product, that pushes us toward separating observed facts (rename, clone, open — things ES reports as "true") from inferred semantics (copy, asset movement) that a correlation layer derives. We'll record and preserve the raw events and treat high-level interpretation as a distinct, clearly-labeled layer. One follow-up on running ES in production at scale. Given the message volume you describe on the notify path, is there a recommended approach for keeping an ES client responsive without dropping events — for example, using es_mute_path or related APIs, early filtering of event types, or offloading correlation from the ES callback thread? I want to make sure we don't design ourselves into a position where the client falls behind and events are lost; for an audit product, a dropped event is a gap in the record. Thanks again — this has been genuinely valuable. Kei
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jul ’26