-
Notifications
You must be signed in to change notification settings - Fork 83
Seatbelt: support native name and Unix-socket path exclusions without filesystem scans #1277
Copy link
Copy link
Open
Feature
Copy link
Labels
Area-SchemaVersioned configuration contracts, JSON schemas, compatibility, or generated wire types.Versioned configuration contracts, JSON schemas, compatibility, or generated wire types.Backend-SeatbeltmacOS process isolation implemented with Seatbelt.macOS process isolation implemented with Seatbelt.In-PRThe issue has an associated pull request in progress.The issue has an associated pull request in progress.Issue-FeatureA request for new or expanded product functionality.A request for new or expanded product functionality.OS-MacOSApplies specifically to macOS hosts or macOS behavior.Applies specifically to macOS hosts or macOS behavior.
Description
Activity
Metadata
Metadata
Assignees
Labels
Area-SchemaVersioned configuration contracts, JSON schemas, compatibility, or generated wire types.Versioned configuration contracts, JSON schemas, compatibility, or generated wire types.Backend-SeatbeltmacOS process isolation implemented with Seatbelt.macOS process isolation implemented with Seatbelt.In-PRThe issue has an associated pull request in progress.The issue has an associated pull request in progress.Issue-FeatureA request for new or expanded product functionality.A request for new or expanded product functionality.OS-MacOSApplies specifically to macOS hosts or macOS behavior.Applies specifically to macOS hosts or macOS behavior.
Description of the new feature / enhancement
Add opt-in macOS Seatbelt exclusions for names at any depth and Unix sockets at configured paths, so callers can enforce these rules without enumerating a directory tree to populate literal
filesystem.deniedPaths.A per-access name rule should cover entries created after launch and remain effective when a directory containing a match moves between writable roots; existing configurations should retain their behavior.
Proposed technical implementation details
Add
seatbelt.deniedPathNamesandseatbelt.deniedUnixSocketPathsto the mutable development contract, with native Seatbelt deny rules, the existing experimental authorization, and the corresponding SDK, schema, documentation and tests.Keep name syntax narrow: literal relative name sequences such as
.sshand.config/gh, matched at any depth, with rename protection for leading components; document resolved-path/alias behavior and that socket restrictions follow current paths rather than moved socket identities.This targets the macOS Seatbelt backend; I am preparing a draft implementation with native macOS validation.