# vtcode-bash-runner
## Modules
## Rules
- `CommandExecutor` trait = primary abstraction for new backends.
- `CommandPolicy` trait = execution gate. `WorkspaceGuardPolicy` enforces boundaries.
- Feature flags: `dry-run`, `pure-rust`, `exec-events`, `serde-errors`.
- `unsafe` in `process_group` must have `// SAFETY:` comments.
## Testing
## Gotchas
- `BashRunner::new()` canonicalizes root — bails if missing.
- `path_cache` is LRU (256) — no fresh canonicalize every call.
- `remove_env_var` is unsafe, single-threaded startup only.