Guides
Configuration
Customize your Security Layer security policy.
Security Layer's configuration lives at ~/.securitylayer/. All config files use YAML with a version field for schema compatibility.
Config files
| File | Purpose |
|---|---|
config.yaml | Main configuration (mode, judge settings, logging) |
capabilities/sessions.yaml | Session capability grants |
capabilities/channels.yaml | Channel capability restrictions |
capabilities/skills.yaml | Skill capability declarations |
ai-tools.yaml | AI tool caller profiles and detection rules |
projects.yaml | Project directory trust rules |
learned-rules.json | Auto-approved patterns from "Approve & Remember" |
Main config
# ~/.securitylayer/config.yaml
version: 1
mode: enforce # or "learning"
judge:
enabled: true
provider: anthropic
model: claude-haiku-4-5-20251001
api_key_env: ANTHROPIC_API_KEY
timeout_ms: 500
logging:
level: info # debug, info, warn, errorSession capabilities
# ~/.securitylayer/capabilities/sessions.yaml
version: 1
sessions:
claude-code:
capabilities:
- exec
- file.read
- file.write
- web_fetch
default_taint: owner
restricted:
capabilities:
- file.read
- exec:owner # exec only in owner-taint projects
default_taint: untrustedAI tool profiles
# ~/.securitylayer/ai-tools.yaml
version: 1
callers:
claude-code:
display_name: Claude Code
default_taint: OWNER
capabilities:
- exec
- file.read
- file.write
- web_fetch
detect:
env:
- CLAUDE_CODE
process:
- claude
cursor:
display_name: Cursor
default_taint: TRUSTED_CONTACT
capabilities:
- exec
- file.read
- file.write
detect:
env:
- CURSOR_SESSION
process:
- cursorProject trust
# ~/.securitylayer/projects.yaml
version: 1
trust_rules:
- path: "~/Dev/Personal/**"
taint: OWNER
- path: "~/Dev/Work/**"
taint: TRUSTED_CONTACT
- path: "/tmp/**"
taint: WEB_CONTENT
default: UNTRUSTED_HUMANSchema versioning
All config files include a version field. When Security Layer loads a config file:
- It checks the
versionfield - If the version is supported, it loads normally
- If the version is newer than expected, it runs any available migrations
- If the version is unsupported, it refuses to load rather than silently misinterpreting
This prevents silent configuration breakage during upgrades.
Viewing config
# Full status overview
sl status
# Capabilities
sl capabilities show
# Taint and project trust
sl taint show
sl projects list
# Caller profiles
sl callers listSee also
- init — Interactive setup wizard
- Capabilities — How capabilities work
- Taint levels — How taint tracking works
- Project trust — Directory trust configuration