Claude

IntuitionLabs is now a member of the Claude Partner Network – AI training and upskilling with Claude for pharma and biotech. Book a call.

IntuitionLabs
Back to Articles
IntuitionLabs

glp · audit trail

GLP-Compliant Audit Trail on macOS: A Technical Guide

November 16, 2025
Updated August 31, 2026
35 min read

A technical guide to creating a GLP-compliant audit trail on macOS (Sequoia 15 / Tahoe 26). Learn to meet data integrity rules (21 CFR Part 11, FDA CSA 2025) using APFS, FSEvents & Endpoint Security

GLP-Compliant Audit Trail on macOS: A Technical Guide
Summary
  1. 01A GLP audit trail must preserve prior records, identify the responsible individual, capture the reason and date of change, and keep records reviewable.
  2. 02A controlled workflow, not post-change filesystem monitoring, should create the authoritative audit record before an authorized change commits.
  3. 03Endpoint Security can provide independent operating-system event evidence, while FSEvents should be used for reconciliation and incident detection.
  4. 04Local APFS snapshots and SQLite permissions can support recovery and access control, but do not alone create immutable GLP retention.
01

Executive Summary

In regulated laboratory environments, Good Laboratory Practice (GLP) requires that all raw data and data files be managed with strict controls to ensure integrity, traceability, and reliability. Central to GLP compliance is the maintenance of an audit trail – a permanent, attributable record of all operations on data. This report examines how to implement a GLP-compliant audit trail specifically on macOS systems. We review GLP regulations and data integrity principles, Mac platform logging and file-system features, and technical strategies for monitoring and logging file-related events. Key requirements – such as preserving original data, capturing user identity, time-stamping changes, and securely storing audit records – are mapped to macOS capabilities like the Apple File System (APFS) snapshots, the (deprecated) OpenBSM audit subsystem, the newer Endpoint Security API, and directory monitoring APIs (FSEvents, kqueue). We also explore supplementary measures (cryptographic hashing, write-once logging, secured backups) that bolster compliance. Throughout, we highlight examples and best practices, supported by illustrative workflows and citations from regulatory guidelines and technology documentation.

This comprehensive report concludes with a discussion of implementation challenges (e.g. evolving macOS audit technologies), recommended architectural patterns (such as controlled workflows and protected audit repositories), and future directions (e.g. cloud archiving for audit records). It also notes the FDA’s February 2026 Computer Software Assurance (CSA) guidance. That guidance supersedes the September 2025 document and applies to software used in medical-device production and quality-management systems under 21 CFR Part 820; it is not GLP-wide guidance. By aligning macOS system design with applicable GLP requirements, laboratories can support scientific data integrity.

21 CFR 58.130(e)

US GLP provision governing changes to automated data entries

2026

Year FDA issued final Computer Software Assurance guidance

02

Introduction and Background

Good Laboratory Practice (GLP) is a set of principles intended to assure the quality, integrity, and traceability of non-clinical laboratory studies, particularly those related to the safety testing of chemicals, drugs, and other products. The OECD Principles of GLP were developed in 1979–80, adopted by the OECD Council in 1981, and revised in 1997. GLP mandates thorough documentation of experimental data. The OECD GLP guidance (reviewed periodically) and 21 CFR 58 require that all raw data – whether on paper or in electronic form – be preserved and available for inspection by regulatory authorities ([1]) ([2]). Modern interpretations of GLP emphasize data integrity in computerized systems, often using the ALCOA+(A) framework (Attributable, Legible, Contemporaneous, Original, Accurate, Complete, Consistent, Enduring, Available) ([3]) ([4]). For automated data entries governed by 21 CFR 58.130(e), changes must not obscure the original entry and must identify the reason, date, and responsible individual. The exact controls needed for other records depend on the applicable regulation, intended use, and approved procedures.

For GLP-compliant electronic systems, audit trails are crucial. Regulatory texts specify that any change in data entries shall not obscure the original entry and must clearly indicate the reason, date, and responsible individual ([1]) ([2]). A consensus definition (PerkinElmer, pharma industry) is that an audit trail is a “secure, computer-generated, time stamped electronic record that allows for reconstruction of the course of events relating to the creation, modification, or deletion of an electronic record” ([5]). Industry experts reinforce that an audit trail must be secure, computer-generated, and time-stamped ([4]), and must include both original and changed data with user details ([4]) ([5]). In short, the trail must allow a second person (e.g. quality assurance reviewer) to see exactly what happened to each data file.

Implementing such a trail on a Mac system poses both opportunities and challenges. macOS (formerly OS X) is a Unix-based OS with a modern file system (APFS) and a variety of logging/auditing mechanisms. Unlike traditional paper logs, digital audit trails can be automated and cryptographically secured, but they must be carefully designed so they themselves cannot be tampered with. This report focuses on techniques to build a GLP-compliant code-driven audit system for data files on macOS. We will cover the regulatory requirements in detail, Mac-specific features, design strategies and code approaches, and discuss real-world considerations and examples.

F.01
Status of macOS Auditing APIs by OS Version (2=Recommended, 1=Available, 0=Unavailable)
03

Regulatory Framework and GLP Audit Trail Requirements

GLP Standards on Audit Trails

Regulations explicitly call out audit-trail-related requirements. Most relevant is 21 CFR 58.130(e) (US GLP): “…any change in automated data entries shall be made so as not to obscure the original entry, shall indicate the reason for such change, shall be dated, and the responsible individual shall be identified.” In practice, this means that each covered automated data entry must retain a reconstructable change history with the required attribution and date. Where 21 CFR Part 11 applies, § 11.10 requires validated closed systems to use secure, computer-generated, time-stamped audit trails that independently record the date and time of operator actions creating, modifying, or deleting electronic records; record changes must not obscure previously recorded information, and audit-trail documentation must be retained and available for agency review. The applicable requirements depend on the records and regulations in scope.

Expert references concur. For example, Matthijs et al. (2006) note that in GLP data-handling software, an audit trail “must be secure, computer-generated and time-stamped” and include “both the original and changed data plus details of the person responsible” ([4]). This aligns with the ALCOA+ principles: audit records must be Attributable (to a person), Legible throughout their life, Contemporaneous (captured in real time), Original, and Accurate ([3]). The “+” adds Complete, Consistent, Enduring, and Available – ensuring no gaps or hide in the data record. Put simply, GLP demands an unbroken chain of evidence for each data file, revealing who did what, when, and why.

Data Integrity and Validation

GLP also requires validation of any computerized system that handles regulated data. This means that an audit-trailed system must be carefully designed, tested, and documented ([6]) ([7]). Any software used must have documented evidence that it meets requirements ([8]). Thus, when building an audit trail on Mac, one must not only code it but also validate and document the implementation (tests showing it works under all conditions).

The FDA has emphasized the importance of audit trails for data integrity. A review of regulatory guidance shows that audit trails capture “electronic record activities including all changes made…with the individuals making the changes, and the date” ([9]). Publications and training (e.g. ECA Academy) often stress that audit trails are critical for compliance with Part 11 and related regulations. In a GLP context, the quality assurance unit must monitor each study through inspections at intervals adequate to assure study integrity and review the final study report; the frequency and scope of audit-trail review should be defined by applicable requirements, risk assessment, and approved written procedures. The draft GLP guidance (GLP Quality System) even suggests making audit trails ALCOA+ compliant (though not yet finalized) ([10]).

In February 2026, FDA issued final Computer Software Assurance (CSA) guidance. It supersedes FDA’s September 2025 final guidance and describes a risk-based approach for computers and automated data-processing systems used in medical-device production or quality-management systems under 21 CFR Part 820. It does not establish GLP-wide requirements; a laboratory should determine the guidance’s applicability separately from its GLP obligations.

In July 2025, the European Commission opened a consultation on a draft revision of EU GMP Annex 11 (Computerised Systems). The consultation closed on 7 October 2025. As of August 2026, the Commission’s current EudraLex Volume 4 page continues to list Annex 11 as the January 2011 revision; the 2025 text remains a draft consultation document, not a final requirement. Annex 11 is EU GMP guidance for medicinal-product manufacturing, so it may provide comparative context for data-integrity design but is not itself a GLP requirement. Laboratories should base GLP controls on the regulations applicable to their studies and treat draft Annex 11 proposals as nonbinding until formally adopted.

In summary, applicable requirements may include preservation of original data; logging changes with the required reason, date, and responsible individual; protected retention and reviewability of records; and validation appropriate to the system’s intended use and governing requirements. WORM retention may be one implementation control, but it is not supplied merely by local audit logging. We will map each requirement to technical solutions on Mac in the following sections.

“

Put simply, GLP demands an unbroken chain of evidence for each data file, revealing who did what, when, and why.

04

The macOS Environment: Filesystems, Logs, and APIs

To implement a GLP-compliant audit trail on Mac, one must understand macOS-specific capabilities. macOS is built on a Unix architecture with unique logging/auditing facilities.

File System (APFS) and Data Protection

Modern macOS uses the Apple File System (APFS), which provides strong data integrity features. APFS uses copy-on-write metadata and supports snapshots and clones, enabling a read-only point-in-time capture of filesystem state. This can be leveraged for operational recovery and versioning: scheduled APFS snapshots (or Time Machine backups) can preserve a point-in-time data state while the active file is later modified. They must not, however, be treated as immutable GLP retention archives unless a separately validated retention system enforces the required immutability, retention, and access controls ([11]). (Apple’s Disk Utility and the tmutil command allow snapshots to be created and viewed.)

On Macs with Apple silicon or a T2 Security Chip, APFS volumes are created with a volume-encryption key by default; FileVault is an optional capability that, when enabled, protects that key using the user’s credentials and the hardware UID. Encryption is more about confidentiality than audit, but it can help protect audit logs stored on disk against unauthorized physical access. For GLP, one could consider storing audit records on a separate encrypted volume or sending them off-system.

MacOS Logging and Auditing Facilities

macOS provides several layers of logging/auditing:

  • OpenBSM Audit (auditd): macOS has included the OpenBSM audit trail, but Apple identifies Endpoint Security as its replacement. Apple states that OpenBSM has been deprecated since macOS Big Sur and will be removed in a future macOS release. A laboratory using OpenBSM in an existing deployment should verify the behavior and support status on its deployed macOS version, assess migration through change control, and validate event coverage for its intended use.

  • Endpoint Security Framework: As a replacement for BSM, Apple introduced the EndpointSecurity API (macOS 10.15+) for security/event monitoring. This is now the recommended and fully supported approach for system-level auditing on macOS. The API allows a privileged client to receive events (file execution, open, write, etc.) in real-time, capturing file-related actions along with the responsible process/user. Endpoint Security coverage and behavior should be verified against the Apple documentation and the specific macOS versions deployed by the laboratory. Using EndpointSecurity requires writing a system extension or privileged agent with Apple-provisioned entitlements. It is complex, but is the officially endorsed path for next-generation auditing.

  • File System Events (FSEvents): The FSEvents API (macOS 10.5+) notifies applications about changes to directories or volumes ([12]). It is high-level (on the scale of “file X in folder Y changed”), rather than per-system-call. FSEvents can be accessed in various languages (e.g. using Swift or Python libraries). FSEvents emits notifications about directory or volume changes, but it lacks detailed context such as user identity out of the box.

  • kqueue/kevent: The BSD kernel event queue (kqueue) can monitor file descriptors for specific events. It is a lower-level mechanism than FSEvents and can watch individual files for changes or closures. It’s less commonly used for broad monitoring (more for specific file handles).

  • Unified Logging (os_log): Beginning in macOS 10.12, Apple replaced traditional syslog/ASL with a new Unified Logging system, accessed via os_log APIs ([13]). This is designed for application logging (debugging, etc.). For our purposes, one can write audit entries to the unified log, but extracting them requires using the log command or parsing the log database. Unified logs are not easily kept as append-only text files; they reside in a rolling database. However, one could periodically extract relevant entries.

Each of these can play a role. iOS/macOS platform security documentation suggests using write-only/separate logging for audit: e.g. logs stored in a location without general write access, to make tampering difficult . The built-in auditd in older macOS already writes logs that only root/audit-group can read ([14]), providing a level of protection.

macOS User Identity

For GLP, user identity is important. macOS is multi-user; each person logs into a unique account. Actions in the audit trail should ideally show the actual user (not a generic “system” account). Thus, the solution should ensure that each lab user has a dedicated login. When catching an event (via auditd, EndpointSecurity, or script), the code must record the user ID (or name). On macOS, functions like getlogin() or NSProcessInfo.processInfo().environment ["USER"] can fetch the username if run in a user session. For services, one can use the process’s effective UID to map to a username.

In summary, macOS provides several building blocks: file-level snapshots, logging daemons, and developer APIs. We will leverage these to code an audit system.

05

Designing a GLP-Compliant Audit Trail on macOS

Having reviewed the requirements and platform capabilities, we now outline a design framework for a GLP audit trail system on Mac and discuss implementation options.

Core Functional Requirements

Based on GLP rules and ALCOA+, a compliant audit trail system must satisfy the following (summarized):

  • Preserved, reconstructable record of each change: A controlled workflow must preserve the prior record or version before an authorized modification and retain it with the associated metadata. The preservation and audit repositories must use validated controls that enforce retention and detect or prevent unauthorized alteration; ordinary local filesystem snapshots alone do not provide this assurance.

  • Timestamping: Every data entry and every change must be timestamped when created/modified ([4]) ([3]).

  • User Attribution: The identity of the individual making or authorizing a change must be recorded. This implies using unique user accounts and capturing that identity in the log ([2]) ([4]).

  • Reason for Change: If any change is made, an explanation (audit note) should be captured. This may require user input (e.g., via a prompt in software) or at least a controlled record stating why the change occurred ([1]).

  • Protection Against Tampering: Audit records themselves must be secured. This could mean writing logs to a protected database or append-only file, possibly on a separate medium. Once written, entries should be uneditable (acting like a WORM – write once, read many – storage).

  • Log Retention: Audit data must be retained for a required duration (GLP rules often specify years) and accessible for review. Ideally this means regular backups or remote archival.

  • Review Capability: The system should allow authorized QA personnel to retrieve and interpret the audit trails. This implies logs must be in a readable format and indexed if large, as well as having access controls requiring at least read-only access for QA.

  • Validation: The entire audit system must be validated. Every feature (e.g. log generation, timestamping) needs documented verification.

Architectural Overview

A high-level architecture for a GLP audit trail on Mac might include:

  1. File Monitoring Agent: A background process or daemon that watches the data directories. When it detects a file creation, modification, rename, or deletion, it triggers logging. We consider three modes:
  • File System Events (FSEvents): Watch entire folders. Whenever any file changes, FSEvents notifies. The agent then queries which file changed and records it.
  • OpenBSM Audit (if enabled): Configure the audit_control to watch file objects (fa class) and user logins. Auditd then logs events automatically. We could periodically parse /var/audit logs, or have praudit feed into our database.
  • Endpoint Security API: A custom program using the EndpointSecurity client can receive callbacks when files are opened, closes, etc., and can log in real time with full context.
  1. Logging Backend: The monitored events need to be recorded in a secure database or log file. Options:
  • SQLite or SQL DB: Stores rows like (timestamp, user, event, filepath, hash_before, hash_after, comment). The DB file itself should be on a secure volume (perhaps encrypted).
  • Append-Only Log File (CSV/JSON): A text file written sequentially, ideally protected from edits. (One could use file permissions to make it writable only by a specific service and readable by QA).
  • System Log: Use the built-in syslog/unified log for writing events. However, unified logs can be rotated and accessed via log utility, which may not be ideal for GLP audit since older entries could roll off or be in binary.

A recommended approach is a dedicated audit database (e.g. SQLite) with restricted write permissions. For extra security, entries could be cryptographically signed or hashed cumulatively to detect tampering.

  1. Data Preservation: Before an authorized modification, preserve the prior version and associated metadata in the validated archive, then verify the completed transaction. The archive must enforce the approved retention policy and be independently administered from routine users.
  • A local APFS or Time Machine snapshot may assist operational recovery, but it must not be treated as the immutable preservation mechanism because it can be deleted.
  • Record a cryptographic hash, such as SHA-256, for each retained version. A hash can detect a difference; it does not replace retention of the underlying record.
  1. User Interface/Workflow: If supporting “manual approval” for changes, the system could require an approver or a comment field for changes.
  • E.g., use an AppleScript dialog or custom UI that pops up when editing certain files, asking “Reason for change”.
  • The response is then written to the audit log along with change details.
  • Alternatively, design the data handling application(s) to prompt for notes.
  1. Backup and Archive: The entire log and data set should be regularly backed up. For GLP, archives might be on WORM media or at least sealed with checksum and access controls. The lab’s SOPs should specify that audit logs are preserved (perhaps also signed and stored off-network).

  2. QA Access Interface: Provide a way for quality staff to view audit data. Possibly a read-only viewer interface or script that exports a “report” (filter by date, user, file, etc.). This could be a simple web front-end (if networked), or even a command-line query tool.

The table below summarizes common approaches and their trade-offs in the macOS context:

T.02
Method/APIOS SupportWhat it CapturesProsCons
OpenBSM AuditdAvailability and configuration must be verified for the deployed macOS releaseConfigured BSM audit events, including selected file and login activityDetailed binary audit records; may include audit identity, process, and path informationNot WORM retention; configuration and supported coverage require validation; logs can be voluminous and difficult to interpret
Endpoint Security APImacOS 10.15+Supported file and process eventsApple security-event monitoring API; can provide process and audit-token context in real timeRequires Apple-granted Endpoint Security entitlement and a privileged, appropriately deployed client; event coverage and failure handling require validation
File System Events (FSEvents)macOS 10.5+ (user-level)Notifications of directory-level changes (file created, deleted, modified)Built-in, easy to use (APIs for many languages); lightweightCoarse grain (no details of user or exact op; needs polling to identify changes); may miss events if too fast
kqueue/keventmacOS (BSD subsystem)Low-level file descriptor events (file to end-of-file, etc.)Fine-grained (can watch specific files); system-levelRequires the monitoring process to open and retain a descriptor for every watched file; per-file monitoring can become resource-intensive for large hierarchies
Hash Snapshots (custom)UniversalFile content hashes (pre and post-change)Verifies data integrity independent of OS logsManual effort to implement; only detects changes, doesn’t record user/time directly
Application HooksLocal codeAll actions within a custom app (save, edit)Full control, easier to attach metadataOnly works for instrument/commercial software if you can modify/extend it
Unified Logging (os_log)macOS 10.12+Log messages (developer-chosen)Standard Apple approach; queries via log command; can embed user infoLogs roll over; not append-only on disk; requires parsing tools; no implicit file monitoring

(Table: Comparison of different macOS audit approaches with regard to building an audit trail.)

Implementation Strategy

Given the above options, a practical strategy on current macOS (Sequoia 15 / Tahoe 26) could combine multiple techniques:

  • Use a controlled action path for regulated changes: Have the validated data-handling application or an authorized service capture the authenticated user, required change reason, and a preserved prior version before committing the change. Generate the audit record as part of that transaction and fail safely if the record or preservation step cannot be completed. Endpoint Security notifications can provide process and UID context for monitored system events, but they do not by themselves capture a human-entered reason or preserve the prior content.

  • Use FSEvents only for reconciliation and incident detection: FSEvents reports filesystem changes, not the responsible user or a definitive complete transaction history. Persist event checkpoints; on coalescing, dropped-event, root-change, or recovery conditions, rescan the controlled repository, compare it with the validated inventory, and create an exception for QA investigation. Do not infer a user identity from the monitoring service account or represent FSEvents observations as the authoritative GLP audit trail.

  • Preserve and verify content before commit: Before an authorized change, create a protected version or snapshot of the prior content and record its SHA-256 hash. After the committed change, record the resulting version and hash. A hash detects a difference but is not a substitute for retaining the original data.

  • Capture change metadata at the controlled action: Require the authenticated user to provide a reason for change before the application or authorized service commits the update. Bind that reason, the actor identity, the prior and resulting version identifiers, and the transaction time to the same protected audit record. A prompt shown only after an asynchronous filesystem event cannot reliably identify or justify the action that caused it.

  • Persist Logs Securely: Store the log entries in a SQLite database located in a secured folder (e.g. /var/audit or a locked directory). Ensure this DB file is owned by root and not modifiable by normal lab users. Use an Access Control List or chmod to make it read-only for the audit-review group. Regularly back up this database (e.g. by a cron job to an offline server).

  • Retention archive and recovery copies: Send completed records and audit data to a validated retention archive with enforced immutability, independent administration, retention controls, and tested retrieval. Time Machine and APFS snapshots may be used separately as recoverable operational backups, but an SOP instruction not to delete them does not make them immutable.

  • Validator/Reviewer Tool: Provide a small script or GUI to extract and format audit events (timestamp, user, action, file, reason). This can be run by QA on demand. The tool should only have read-only permission to the audit database.

A file-monitoring pseudocode example is intentionally omitted. A post-change monitor cannot truthfully reconstruct the prior file contents, authenticated actor, or contemporaneous reason for the action. A production design should instead be implemented and validated as a controlled transaction: authenticate the actor; collect and validate the change reason; preserve the prior version; commit the authorized change; write a protected, ordered audit record; and block or escalate when any required step fails. Endpoint Security notifications and FSEvents reconciliation may provide independent detection controls, but neither replaces this controlled record-creation path.

Table 1 (below) illustrates how these actions map to GLP requirements.

T.03
GLP RequirementmacOS Implementation ExampleComments/Benefit
Preserve original data (no overwrite)Preserve the prior version and metadata in a validated archive before the authorized change commits.Supports reconstruction of the record lifecycle.
Record all changes, with user & timeThe controlled application or authorized service records the authenticated actor and transaction time before commit; Endpoint Security can provide independent process/UID evidence.Creates attributable records rather than assigning the monitor’s identity to a user action.
Indicate reason for changeRequire and validate the reason in the controlled change workflow before commit; bind it to the audit record.Associates the justification with the specific authorized change.
Protected audit trailUse a validated repository with access controls, independent administration, ordered records, and controls that prevent or detect unauthorized alteration.Permissions on a local SQLite file alone are not an immutability control.
Data integrity verificationCompute and record a hash for each retained version.Helps detect a difference but does not replace the underlying record.
Retention archive and recovery copiesArchive records under approved retention controls with tested retrieval; use Time Machine or APFS snapshots only as separately managed recovery copies.Local snapshots can be deleted and are not WORM retention.
QA access/read-only reviewProvide a controlled read-only view or export for QA.Enables review without granting routine modification rights.

Table 1: Mapping of GLP audit requirements to macOS features and practices.

Code and Tools

Depending on the lab’s technical capabilities, implementation can be done in various languages. A Swift program could use the FSEvents framework and the EndpointSecurity framework (recommended for Sequoia 15, Tahoe 26, and newer). A Python or Bash script can call the fswatch command or use a library to capture FSEvents. A production implementation must handle issues such as file renames, deletes, and crashes robustly.

Open-source tools can assist forensic analysis of macOS FSEvents records. For example, FSEventsParser can parse FSEvents files from a live system or extracted image and produce text and SQLite output. Cellebrite BlackLight is a proprietary commercial computer-forensics product, not an open-source tool. These tools may support forensic review, but they are not themselves a GLP-compliant audit trail. For GLP compliance, a custom, validated solution is often needed. (Commercial offerings like Laboratory Information Management Systems might include audit trails, but our focus here is coding a bespoke solution on the OS itself.)

Key best practices in coding the audit service include: running it with only the privileges needed for its intended use; validating its operation (simulate file changes and verify log entries); and securing its distribution and authorization. Developer ID signing does not grant Endpoint Security access: the com.apple.developer.endpoint-security.client entitlement must be requested from Apple. System-extension activation and permissions may still require user approval, unless an appropriately managed deployment configuration authorizes them.

06

Data Analysis and Evidence-Based Considerations

Mac-specific GLP implementation evidence should not be inferred from general industry commentary. The applicable regulatory controls are determined by the records, intended use, and regulations in scope. For example, where Part 11 applies, the regulation requires validation, record protection throughout the retention period, access controls, and secure, computer-generated, time-stamped audit trails; it does not prescribe a particular macOS monitoring product or architecture.

Performance, capacity, and cost are implementation-dependent. A laboratory should establish acceptance criteria during validation, then test representative file volumes, event rates, storage-retention workloads, recovery behavior, and audit-record review. CPU use, hashing overhead, development effort, and commercial-software pricing should not be assumed from generic figures. The implementation plan should include sufficient resourcing for validation, change control, retention, security administration, and periodic review.

07

Case Studies and Examples

While open case studies specifically on Mac auditing are rare, we discuss hypothetical and analogous examples to illustrate principles.

Illustrative Workflow 1: Chemical Testing Lab Migrates to Mac Workstations

This fictional example illustrates a design target, not a demonstrated compliant deployment. A controlled data-handling workflow could authenticate the analyst, require a reason before an authorized update, preserve the prior version and metadata in a validated retention archive, and create a protected audit record as part of the same transaction. A separate reconciliation control could compare the controlled repository with FSEvents or Endpoint Security observations and route discrepancies to QA. Validation evidence, the applicable regulations, and the laboratory’s approved procedures—not the presence of a local SQLite log—would determine whether the implementation is suitable for its intended use.

Illustrative Workflow 2: Genomics Lab with Custom Bioinformatics Processes

This fictional example illustrates possible independent detection controls, not a validated GLP solution. A laboratory could use Endpoint Security notifications, where appropriately authorized, to collect operating-system event evidence and reconcile it with records created by the controlled workflow. Cryptographic hashes or signatures may help detect changes, but they do not by themselves capture the required reason for change, retain prior data, or establish compliance. The laboratory would need to validate the complete architecture, including retention, access control, audit-trail review, exception handling, and retrieval.

Example Illustration – Audit Log Format

Below is an excerpt of what an audit log table might look like. This shows how data can be structured for clarity:

T.01
TimestampUserActionFile PathHash BeforeHash AfterComment
2023-07-10T09:15:23labtech1create/Data/experiment1/results1.csv(null)3a5f...d9bInitial data file created
2023-07-11T11:02:48labtech1modify/Data/experiment1/results1.csv3a5f...d9b7e2a...4c1“Re-analysis after QC”
2023-07-11T11:05:10labtech1modify/Data/experiment1/results1.csv7e2a...4c19b6d...7f2“Typo fix in comments”
2023-07-12T14:22:37labtech2create/Data/experiment1/results2.csv(null)a88f...e3aNew replicate data

Table: Sample audit trail entries (timestamped, user, action, file, file hashes before/after change, and reason). Original and new data hashes are recorded to verify content integrity.

This illustrates key audit-trail fields: every entry is dated, identifies the actor and action, and records both old and new content hashes. A change to content stored in the file, including a comment, produces a different SHA-256 hash. In a GLP audit, such tables or reports may support review when generated by a validated, protected system and considered with the underlying records.

Common Pitfalls and Findings

Experience shows a few common issues in audit trail implementations:

  • Disabled Audit Features: Disabling an audit feature can undermine a controlled record-creation process. Whether a feature must remain continuously enabled and how its records must be reviewed depends on the applicable regulation, intended use, and approved procedures. For automated data entries covered by 21 CFR 58.130(e), changes must not obscure the original entry and must identify the reason, date, and responsible individual. Any proposed disabling of a monitoring or audit control should be assessed and handled through documented change control.

  • Incomplete User Management: If all lab workers use a shared account, attribution is lost. We emphasize using personal accounts or at least a small number of known IDs, and linking each to a person through personnel records.

  • Emailing Data: Common practice of emailing data files (which breaks audit chain). Solutions must capture transfers as well (e.g. log when a file is closed after editing, or possibly monitor the Mail sent attachments via EndpointSecurity).

These controls can reduce the risk of the identified pitfalls when they are implemented and validated for the intended use. Unique authenticated accounts support attribution. Endpoint Security monitoring records only the subscribed, supported events; the laboratory must validate coverage for the applications, paths, transfer mechanisms, and failure modes in scope. Operating-system monitoring is independent supporting evidence, not complete GLP evidence by itself.

“

A production design should instead be implemented and validated as a controlled transaction: authenticate the actor; collect and validate the change reason; preserve the prior version; commit the authorized change; write a protected, ordered audit record; and block or escalate when any required step fails.

08

Discussion and Implications

Implementing a GLP audit trail on Mac is not just a technical exercise but a cultural one: labs must train staff to follow the process (e.g. not to bypass audit software). However, the implications are significant:

  • Regulatory Assurance: A working audit trail dramatically lowers the chance of non-compliance. As one regulatory expert notes, incomplete audit trails are a red flag in inspections ([9]) ([4]). Conversely, demonstrating a robust system can expedite study approvals.

  • Data Quality: Beyond compliance, audit trails improve data quality. Analysts become more meticulous if they know changes are logged. In academic studies, auditability is increasingly seen as a marker of credible science.

  • Security and Privacy: The audit system itself must be secure and may use validated WORM or equivalent retention controls where required. GLP labs often handle sensitive IP, so ensuring the audit log cannot be manipulated is both a compliance and security issue ([15]).

  • Technology Evolution: As macOS evolves, audit solutions must adapt. Apple identifies Endpoint Security as the replacement for the deprecated OpenBSM audit trail and says OpenBSM will be removed in a future release. Endpoint Security is designed to provide a security-event stream to suitably authorized clients, but a laboratory must validate the selected events, coverage, failure handling, and operational controls for its intended use. Apple documents that the Endpoint Security client entitlement must be granted for a client to use the framework; code signing alone does not establish access to the framework or GLP suitability.

  • Cross-Platform Issues: If a lab has mixed OSes (e.g. Windows instruments feeding a Mac), audit trails may need to integrate. While beyond this report’s scope, note that GLP systems often centralize audit logs from multiple sources. For example, Syslog or SIEM systems could collect from Mac and Windows alike.

09

Future Directions

Looking ahead, several trends and tools could enhance GLP audit trails on Mac:

  • Blockchain/Crypto-Ledger: Researchers have proposed using blockchain to append audit entries, guaranteeing immutability ([4]). A production-grade solution might write each log entry as a transaction in a private blockchain. This is still experimental, but it aligns with “write-once” principles and could be deployed as a consultation add-on in future labs.

  • Machine Learning Review: For large datasets, automated tools could analyze audit logs for anomalies (e.g. a user making hundreds of changes in a minute). Integrating ML/analytics could help QA focus on suspicious areas.

  • Cloud-Based Archives: Instead of local snapshots, labs may transition to cloud storage (with version history) for data. In such cases, audit must also capture cloud API events. Apple’s iCloud Drive or enterprise solutions (SharePoint, AWS S3) have their own versioning and logs, which could complement on-device logs.

  • Regulatory Updates: The regulatory landscape is shifting. FDA issued its final Computer Software Assurance (CSA) guidance in February 2026 for software used in medical-device production and quality-management systems; it describes a risk-based assurance approach under 21 CFR Part 820 and is not GLP-wide guidance. The European Commission’s July 2025 Annex 11 revision was a GMP consultation draft; the consultation closed in October 2025, and the Commission currently lists the January 2011 Annex 11 revision. Annex 11 can inform comparative GxP thinking, but it is not a GLP requirement. Laboratories should monitor formal regulatory updates and assess their applicability through change control.

10

Conclusion

Building an audit trail for data files on a Mac involves aligning applicable regulatory requirements with macOS technical capabilities. A controlled workflow should capture attributable, contemporaneous change records; preserve prior records; and protect audit documentation against unauthorized alteration. APFS snapshots and the Unix privilege model can support recovery and local access control, but they do not by themselves satisfy the requirements of 21 CFR 58.130(e) for covered automated data entries. Where Part 11 applies, § 11.10(e) requires secure, computer-generated, time-stamped audit trails and retention of their documentation. The architecture described above can support compliance only after validation and assessment against the laboratory’s intended use, procedures, and applicable regulations.

In practice, a Mac-based system must be thoroughly validated and documented according to its intended use and applicable requirements. FDA’s February 2026 CSA guidance describes a risk-based approach for medical-device production and quality-management-system software under 21 CFR Part 820; it does not reduce GLP obligations or govern GLP systems generally. New implementations should use a validated controlled workflow to create attributable, contemporaneous records and preserve prior states. Endpoint Security can supply independent operating-system event evidence, while FSEvents should be treated as a reconciliation signal with documented event-loss handling—not as the authoritative audit trail. Laboratories should assess the applicable regulations and current platform documentation as part of change control and periodic review.

References: Regulatory texts and industry guidelines cited in this report include 21 CFR Part 58 (GLP rules) ([2]), OECD GLP guidance, and data-integrity best practices ([4]) ([1]) ([3]) ([5]). Technical sources include Apple developer documentation ([12]) and macOS administration analyses ([14]) ([16]). All software approaches are consistent with these references and best practices.

The publisher

About IntuitionLabs

Build practical AI for pharma and biotech with IntuitionLabs. We help life-science teams turn complex information and workflows into useful software, governed knowledge systems and AI tools.

IntuitionLabs is an AI consulting, custom software development and data engineering firm serving pharmaceutical, biotechnology, medical-device and other life-science organizations. We work with clinical, regulatory, medical-affairs, commercial, quality and IT teams to connect technology decisions with the work people need to accomplish.

AI consulting and adoption

Our AI enablement services cover readiness assessments, use-case selection, governance and policies, team workshops, adoption measurement and ongoing advisory support. We help organizations structure the information layer behind AI: source material, context, permissions and maintained knowledge that make generated answers useful and reviewable. Private LLM inference and hosted AI options support teams evaluating how to operate AI with appropriate control over their data and infrastructure.

Software, data and life-science workflows

IntuitionLabs develops custom software for pharma and biotech, integrates enterprise systems, and builds data engineering and business intelligence solutions. Areas of focus include AI agents, regulatory research, medical writing, medical affairs, CMC information, competitive intelligence and clinical-document workflows. Our eTMF intelligence work includes cross-system reconciliation and inspection-readiness support.

Enterprise platforms and regulated delivery

We provide Veeva services, application support, managed services, integrations and custom applications, alongside enterprise content work involving platforms such as Egnyte. For regulated workflows, our services include GxP enablement, computer-system validation and software development addressing 21 CFR Part 11 requirements. The applicable controls, validation responsibilities and acceptance criteria are defined for each engagement.

Work with IntuitionLabs

Explore AI enablement, pharma and biotech software development, data engineering and BI, and Veeva services. Contact IntuitionLabs to discuss your workflow, information sources and implementation needs.

IntuitionLabs publishes educational research to help life-science teams make informed technology decisions. Coverage of a product or organization does not imply a client relationship, endorsement or partnership.

Sources / 16
Adrien Laurent

Need Expert Guidance on This Topic?

Let's discuss how IntuitionLabs can help you navigate the challenges covered in this article.

I'm Adrien Laurent, Founder & CEO of IntuitionLabs. With 25+ years of experience in enterprise software development, I specialize in creating custom AI solutions for the pharmaceutical and life science industries.

Disclaimer

The information contained in this document is provided for educational and informational purposes only. We make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability, or availability of the information contained herein. Any reliance you place on such information is strictly at your own risk. In no event will IntuitionLabs.ai or its representatives be liable for any loss or damage including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from the use of information presented in this document. This document may contain content generated with the assistance of artificial intelligence technologies. AI-generated content may contain errors, omissions, or inaccuracies. Readers are advised to independently verify any critical information before acting upon it. All product names, logos, brands, trademarks, and registered trademarks mentioned in this document are the property of their respective owners. All company, product, and service names used in this document are for identification purposes only. Use of these names, logos, trademarks, and brands does not imply endorsement by the respective trademark holders. IntuitionLabs.ai is an AI software development company specializing in helping life-science companies implement and leverage artificial intelligence solutions. Founded in 2023 by Adrien Laurent and based in San Jose, California. This document does not constitute professional or legal advice. For specific guidance related to your business needs, please consult with appropriate qualified professionals.

Related Articles

Need help with AI?

© 2026 IntuitionLabs. All rights reserved.