Hooks
Hooks allow you to run commands automatically during the worktree lifecycle.
Available Hooks
Section titled “Available Hooks”| Hook | When | Working Directory |
|---|---|---|
pre_start | Before worktree creation | Origin repository |
post_start | After worktree creation | New worktree |
pre_clean | Before worktree removal | Current worktree |
post_clean | After worktree removal | Main repository |
Configuration
Section titled “Configuration”[hooks]pre_start = ["echo 'Preparing worktree...'"]post_start = [ "pnpm install", "pnpm db:migrate"]pre_clean = ["git stash"]post_clean = ["echo 'Cleanup complete'"]Environment Variables
Section titled “Environment Variables”The following environment variables are available in all hook commands:
| Variable | Description |
|---|---|
VIBE_WORKTREE_PATH | Absolute path to the created worktree |
VIBE_ORIGIN_PATH | Absolute path to the original repository |
Example Usage
Section titled “Example Usage”[hooks]post_start = [ "echo 'Worktree created at: $VIBE_WORKTREE_PATH'", "echo 'Origin repository: $VIBE_ORIGIN_PATH'"]Hook Output Behavior
Section titled “Hook Output Behavior”vibe displays a real-time progress tree during hook execution:
✶ Setting up worktree feature/new-ui…┗ ☒ Pre-start hooks ┗ ☒ npm install ☒ cargo build --release ⠋ Copying files ┗ ⠋ .env.local ☐ node_modules/Output Handling
Section titled “Output Handling”| Situation | stdout | stderr |
|---|---|---|
| Progress display active | Suppressed | Always shown |
| Progress display inactive | Written to stderr | Always shown |
| Failed hooks | N/A | Always shown |
Hook Execution Order
Section titled “Hook Execution Order”For vibe start:
pre_starthooks run in origin repository- Worktree is created
- Files/directories are copied
post_starthooks run in new worktree
For vibe clean:
pre_cleanhooks run in current worktree- Worktree is removed
post_cleanhooks run in main repository
Common Patterns
Section titled “Common Patterns”Node.js Project
Section titled “Node.js Project”[hooks]post_start = [ "pnpm install", "pnpm build"]pre_clean = ["git stash --include-untracked"]Database Migration
Section titled “Database Migration”[hooks]post_start = [ "pnpm install", "pnpm db:migrate", "pnpm db:seed"]Docker Environment
Section titled “Docker Environment”[hooks]post_start = [ "docker-compose up -d", "sleep 5", "pnpm db:migrate"]pre_clean = ["docker-compose down"]Skipping Hooks
Section titled “Skipping Hooks”You can skip hooks with the --no-hooks option:
vibe start feat/quick-fix --no-hooks