# security model

branchout is a local pi extension with the same filesystem and process permissions as pi.

## trust boundary

inputs come from:

- the current git repository
- branch names selected or typed by the user
- git command output

branchout does not contact services except through explicit git network operations against `origin`.

## command execution

branchout executes `git` directly with argv arrays. it does not build shell command strings.

`/branchout` may run:

```bash
git rev-parse --is-inside-work-tree
git for-each-ref --sort=-committerdate --format=%(refname:short) refs/heads
git check-ref-format --branch <branch>
git fetch origin <source>
git checkout <source>
git pull --ff-only origin <source>
git checkout -b <new> <source>
```

## non-goals

branchout does not:

- register unrelated git commands
- store credentials
- collect telemetry
- run a background service
- stash, reset, rebase, merge, force checkout, or force push
- hide nonzero git exits

## dirty worktrees

git owns dirty-worktree behavior. compatible local edits may remain; conflicting checkouts fail. branchout does not discard or stash user work.
