Overview
Use this guide when you want a Jamf Pro policy to install Beacon for macOS users, configure Claude Code hooks, and forward Beacon runtime telemetry to CrowdStrike Falcon LogScale through HEC. The end state is:- Beacon is installed under
/opt/beacon. - The system endpoint collector runs as a LaunchDaemon.
- Claude Code hooks are installed for the logged-in console user.
- Runtime activity is written to
/var/log/beacon-agent/runtime.jsonl. - Vector tails the runtime JSONL log and forwards events to CrowdStrike Falcon HEC.
- The Falcon Vector forwarder runs as
com.beacon.endpoint.falcon-forwarder.
Prerequisites
Before creating the Jamf policy, prepare:- A signed and notarized Beacon endpoint
.pkgthat includes/opt/beacon/bin/vector. - Claude Code installed on the target Mac.
- A CrowdStrike Falcon LogScale data connection for Beacon JSONL events.
- The Falcon HEC endpoint URL from the data connection.
- The Falcon HEC token or API key generated for that data connection.
- A parser or sourcetype value, usually
jsonor your custom Beacon parser name.
Falcon HEC Settings
CrowdStrike HEC values normally look like:0600 and is sourced by the Vector LaunchDaemon wrapper.
Jamf Policy Setup
Jamf Pro separates package installation from script execution. Use the Packages payload to install the Beacon.pkg, then use a Scripts payload to run a wrapper that calls Beacon’s packaged Jamf helper.
For the most reliable rollout, use two policies:
- Policy 1: Install Beacon package. Installs the signed
.pkg. - Policy 2: Configure Beacon Falcon forwarding. Runs after the package is installed and calls the packaged helper.
1. Upload The Beacon Package
Upload the signed Beacon endpoint package to Jamf Pro and add it to a policy using the Packages payload with the install action. The package installs:/opt/beacon/jamf/claude/falcon/repair-hooks-and-forwarder.sh. Older internal smoke-test instructions may refer to a legacy helper path under /opt/beacon/jamf/scripts; use the path that exists in the package installed on the target Mac.
2. Add A Jamf Script Wrapper
Add a script to Jamf Pro that invokes Beacon’s packaged helper. The script must exist in Jamf Pro before it can be added to a policy.| Parameter | Label | Example |
|---|---|---|
| 4 | Falcon HEC endpoint | https://<tenant>.ingest.<region>.crowdstrike.com/services/collector |
| 5 | Falcon HEC token | ******** |
| 6 | Falcon source | beacon-endpoint-agent |
| 7 | Falcon sourcetype/parser | json |
| 8 | OTLP gRPC port | 4317 |
| 9 | OTLP HTTP port | 4318 |
| 10 | Falcon repository/index | beacon |
What The Helper Does
The combined helper performs all endpoint and forwarding setup:- Installs the Falcon Vector runtime-log forwarder.
- Repairs the Beacon system endpoint.
- Starts
com.beacon.endpoint.collector. - Prepares:
/var/log/beacon-agent/runtime.jsonl/var/log/beacon-agent/inventory_state.jsonl/var/log/beacon-agent/inventory-state.json
- Grants the console user append access for hook-written logs.
- Installs Claude Code hooks for the interactive console user.
- Writes:
/Library/Application Support/Beacon/Forwarders/falcon-vector.toml/Library/Application Support/Beacon/Forwarders/falcon-vector.env/Library/LaunchDaemons/com.beacon.endpoint.falcon-forwarder.plist
- Starts
com.beacon.endpoint.falcon-forwarder.
Manual Smoke Test
To simulate the Jamf policy on one Mac, install the Beacon package, then run the packaged helper manually. If the package downloaded to~/Downloads, install it first:
./BeaconEndpointAgent-*.pkg with the exact package filename.
Then set your Falcon values and run the helper. Jamf reserves script arguments 1-3, so pass _ _ _ before the custom parameters:
Validate A Deployed Mac
Run these commands on a target Mac after the Jamf policy completes.Check Services
state = running.
Check Forwarder Logs
Check Local Files
Check Vector Config
Generate A Claude Hook Event
Generate a unique Claude prompt in headless mode or in a normal Claude Code session:Troubleshooting
Forwarder Is Not Running
Check launchd and stderr:Token Or Endpoint Is Wrong
Check the env file without exposing secrets:401, 403, or repository errors, regenerate the API key in Falcon and verify that the repository/index parameter matches the token scope.
Claude Hooks Are Missing
Fully restart Claude Code after the Jamf policy runs. Then inspect the user’s Claude settings:Local Event Exists But Falcon Search Is Empty
Confirm the event appears in/var/log/beacon-agent/runtime.jsonl, then check Vector stderr for batching, TLS, DNS, or HTTP errors. Falcon searches can lag behind ingestion; wait a minute and search for the exact marker string.
Related
CrowdStrike Falcon LogScale
Create the Falcon parser and data connection, then validate direct HEC ingestion.
Claude with Jamf
Review the Claude-specific Jamf helper layout.
Endpoint event schema
Review normalized Beacon JSONL fields and example events.
Vector forwarding
Understand how Beacon uses Vector for customer-managed forwarding.

