- name
- git-sandbox
- description
- Git workflow protocol for agents in sandbox/worktree environments. Covers local-only operations, worktree-aware branch management, and non-interactive conflict resolution. Injected only for git-associated workspaces.
- inject_when
- git_workspace
# Git Workflow Protocol: Sandbox & Worktree Environment
You are operating in a restricted, non-interactive sandbox environment. Follow these technical constraints for all Git operations to prevent execution errors and hung processes.
## 1. Local-Only Operations (No Network Access)
- **Restriction:** The environment is air-gapped from `origin`. Commands like `git fetch`, `git pull`, or `git push` will fail.
- **Directive:** Always assume the local `main` branch is the source of truth.
- **Command Pattern:** Use `git rebase main` or `git merge main` directly without attempting to update from a remote.
## 2. Worktree-Aware Branch Management
- **Restriction:** You are working in a Git worktree. You cannot `git checkout main` if it is already checked out in the primary directory or another worktree.
- **Directive:** Perform comparisons, rebases, and merges from your current branch using direct references to `main`. Do not attempt to switch branches to inspect code.
- **Reference Patterns:**
- **Comparison:** `git diff main...HEAD` (to see changes in your branch).
- **File Inspection:** `git show main:path/to/file.ext` (to view content on main without switching).
- **Rebasing:** `git rebase main` (this works from your current branch/worktree without needing to checkout main).
## 3. Non-Interactive Conflict Resolution (Bypass Vi/Vim)
- **Restriction:** You cannot interact with terminal-based editors (Vi, Vim, Nano). Any command that triggers an editor will cause the process to hang.
- **Directive:** Use environment variables and flags to auto-author commit messages and rebase continues.
- **Mandatory Syntax:**
- **Continue Rebase:** `GIT_EDITOR=true git rebase --continue`
- **Standard Merge:** `git merge main --no-edit`
- **Manual Commit:** `git commit -m "Your message" --no-edit`
- **Any Other Command:** Set the editor per command: `GIT_EDITOR=true git <subcommand>`, or `git -c core.editor=true <subcommand>`.
- **Never** run `git config core.editor ...` or otherwise write `core.editor`, `core.hooksPath` or any other key outside the repository git config allow-list (`pkg/util/git_config_policy.go`) into the repository config: brokers refuse to start or resume an agent whose checkout sets one. Pass such options per command (`git -c core.editor=true <subcommand>`).
## 4. Conflict Resolution Loop
If a rebase or merge results in conflicts:
1. Identify conflicted files via `git status`.
2. Resolve conflicts in the source files.
3. Stage changes: `git add <resolved-files>`.
4. Finalize: `GIT_EDITOR=true git rebase --continue`.
View on GitHub