Skip to content

Commit 5500c4e

Browse files
docs: Document ancestors (#950)
1 parent 0b39d23 commit 5500c4e

3 files changed

Lines changed: 19 additions & 4 deletions

File tree

docs/docs/deployment/network-extension.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ filter for monitoring network flows and a DNS proxy for intercepting DNS queries
1111

1212
:::info
1313

14-
The network extension requires a [Workshop](https://northpole.dev/) subscription
14+
The network extension requires a [Workshop](https://northpole.security/) subscription
1515
and will not activate without one.
1616

1717
:::

docs/docs/deployment/profile-network-extension.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ monitor and control network traffic. It provides two capabilities: a content
1010
filter for monitoring network flows and a DNS proxy for intercepting DNS queries.
1111
:::info
1212

13-
The network extension requires a [Workshop](https://northpole.dev/) subscription
13+
The network extension requires a [Workshop](https://northpole.security/) subscription
1414
and will not activate without one.
1515

1616
:::

docs/docs/features/binary-authorization.md

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,13 +339,24 @@ The following additional fields are available in the execution context:
339339
| `envs` | `map<string, string>` | Environment variables available to the process |
340340
| `euid` | `int` | Effective user ID (0 for root, etc.) |
341341
| `cwd` | `string` | Current working directory of the process |
342+
| `ancestors` | `list<Ancestor>` | Ancestor processes, ordered from the immediate parent at index `0` up to `launchd` at the end of the list. Only populated for [Workshop](https://northpole.security/) customers. Requires Santa 2026.2+ |
343+
344+
Each entry in `ancestors` has the following fields:
345+
346+
| Field | Type | Description |
347+
| ----- | ---- | ----------- |
348+
| `path` | `string` | File path of the ancestor's executable |
349+
| `signing_id` | `string` | Signing ID of the ancestor, prefixed with Team ID or `platform` (e.g. `EQHXZ8M8AV:com.google.Chrome` or `platform:com.apple.bash`) |
350+
| `team_id` | `string` | Team ID from the ancestor's code signature |
351+
| `cdhash` | `string` | Code directory hash of the ancestor |
352+
| `args` | `list<string>` | Command-line arguments the ancestor was launched with. Requires Santa 2026.3+ |
342353

343354
:::note
344355

345356
Fields accessed from `target.*` are **cacheable** — their result is cached so
346357
subsequent executions are faster. All other fields (`path`, `args`, `envs`,
347-
`euid`, `cwd`) are **not cacheable** and may impact performance if used in
348-
rules for frequently-executed binaries.
358+
`euid`, `cwd`, `ancestors`) are **not cacheable** and may impact performance
359+
if used in rules for frequently-executed binaries.
349360

350361
:::
351362

@@ -378,6 +389,10 @@ cwd != '/Library/LaunchDaemons'
378389
// Only allow platform binaries from a specific path.
379390
// This expression will NOT be cacheable.
380391
target.is_platform_binary && path.startsWith('/usr/bin/')
392+
393+
// Block executions whose immediate parent is Terminal. Requires Santa 2026.2+
394+
// ancestors[0] is the immediate parent; the last entry is launchd.
395+
size(ancestors) > 0 && ancestors[0].path.endsWith('/Terminal') ? BLOCKLIST : ALLOWLIST
381396
```
382397

383398
### Rule Dictionary Format

0 commit comments

Comments
 (0)