SecurityCore Trait
TheSecurityCore trait defines the core security interface for OneClaw Layer 0. It provides authorization, filesystem validation, and device pairing capabilities.
Trait Definition
crates/oneclaw-core/src/security/traits.rs:75
Required Methods
authorize()
Authorize an action with deny-by-default semantics.
Signature:
action- The action to authorize (see Authorization API)
Result<Permit> - Authorization decision with reason
check_path()
Validate if a filesystem path is allowed for access.
Signature:
path- Filesystem path to validate
Result<()> - Ok if allowed, Error if denied
generate_pairing_code()
Generate a one-time pairing code for device authentication.
Signature:
Result<String> - 6-digit pairing code
verify_pairing_code()
Verify a pairing code and return the device identity.
Signature:
code- The pairing code to verify
Result<Identity> - Device identity if code is valid
list_devices()
List all currently paired devices.
Signature:
Result<Vec<PairedDevice>> - List of paired devices
remove_device()
Remove a paired device by ID or ID prefix.
Signature:
device_id_prefix- Full or partial device ID
Result<PairedDevice> - The removed device record
NoopSecurity Implementation
NoopSecurity is a testing-only implementation that allows all actions.
Source: crates/oneclaw-core/src/security/traits.rs:96
Behavior
- authorize(): Always returns
granted: true - check_path(): Allows all paths
- generate_pairing_code(): Returns
"000000" - verify_pairing_code(): Returns
Identity { device_id: "noop-device", ... } - list_devices(): Returns empty list
- remove_device(): Always fails
Usage
DefaultSecurity Implementation
DefaultSecurity is the production-ready security implementation with deny-by-default semantics.
Source: crates/oneclaw-core/src/security/default.rs:19
Features
- Deny-by-default: Unpaired devices are rejected
- Filesystem scoping: Path access validated through
PathGuard - Cryptographic pairing codes: One-time, TTL-bound, random 6-digit codes
- Persistent storage: Optional SQLite persistence across restarts
Constructors
new()
Create with explicit configuration.
crates/oneclaw-core/src/security/default.rs:34
production()
Create with production defaults: workspace-only, pairing required, 5-minute TTL.
crates/oneclaw-core/src/security/default.rs:52
development()
Create with development defaults: workspace-only, pairing optional, 1-hour TTL.
crates/oneclaw-core/src/security/default.rs:58
Configuration Methods
with_registry_path()
Enable flat-file persistence (legacy, deprecated).
crates/oneclaw-core/src/security/default.rs:63
with_persistence()
Enable SQLite persistence (recommended).
crates/oneclaw-core/src/security/default.rs:84
Usage Example
Related Types
Action
Represents an action requiring authorization.crates/oneclaw-core/src/security/traits.rs:7
ActionKind
crates/oneclaw-core/src/security/traits.rs:18
Permit
Authorization decision with reason.crates/oneclaw-core/src/security/traits.rs:33
Identity
Device identity after successful pairing.crates/oneclaw-core/src/security/traits.rs:42
PairedDevice
Persistent device record.crates/oneclaw-core/src/security/traits.rs:51
See Also
- Authorization API - Using the
authorize()method - Device Pairing API - Pairing flow and code management