# L3a: L4 Whitelist Hook

Implement a production-grade L4 security whitelist hook.

**Module**: M3 Safety & Security  
**Est. Time**: 60 min  
**Files**: `starter.py`, `solution.py`

## Objective

Block ALL bash commands except 10 safelisted patterns. This prevents the L3 marque break (agent writing and running scripts).

## Concepts

- L4 whitelist (architectural security)
- Regex pattern matching
- Compound shell operator detection
- Defense in depth

## Starter

```bash
cd course/labs/L3-whitelist-hook/
python starter.py
```

The starter has:
1. A safelist patterns list (currently empty)
2. A compound operators detector (currently empty)
3. A whitelist check function (currently TODO)
4. Test cases for both ALLOWED and BLOCKED commands

## Solution

```bash
python solution.py
```

## Key Design Rules

1. Pin specific scripts: `^npm test$` not `^npm .*$`
2. Never pattern-match an interpreter: `^python .*$` allows running any script
3. Block compound operators before regex
4. Audit log all blocks

## Test Cases

```
npm test          → ALLOW
git status        → ALLOW
rm -rf target/    → BLOCK
python cleanup.py → BLOCK (L3 marque break)
npm test && rm -rf / → BLOCK (compound operator)
```
