ipe
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 15 GitHub stars
Code Fail
- process.env — Environment variable access in apps/hook/server/index.ts
- network request — Outbound network request in apps/hook/server/index.ts
- rm -rf — Recursive force deletion command in install.sh
- process.env — Environment variable access in packages/server/browser.ts
Permissions Pass
- Permissions — No dangerous permissions requested
This tool provides a GitHub-style browser UI for reviewing Claude Code plans and code diffs, complete with inline comments, version comparisons, and file snippet previews.
Security Assessment
The tool makes outbound network requests and accesses environment variables, which is expected for a local web server that handles plan data. No hardcoded secrets were detected. However, the installation script contains a `rm -rf` recursive force deletion command, which is a significant concern. Piping `curl` directly to `bash` (as the install instructions suggest) executes remote code on your machine, making the combination of blind execution and forceful deletion a risky vector. Overall risk is rated Medium.
Quality Assessment
The project is actively maintained, with its last push occurring today. It uses the permissive MIT license and has a clear description. With 15 GitHub stars, it is a relatively new and small project, meaning it has not yet received widespread community scrutiny. No dangerous system permissions are requested by the packaged application itself.
Verdict
Use with caution — the application itself appears standard, but you should manually review the `install.sh` script before running it to ensure the `rm -rf` commands are safely scoped and not destructive to your system.
GitHub-style plan review for Claude Code
IPE
Review Claude Code plans and code diffs in a browser UI with inline comments, like a GitHub PR review.
Features
- GitHub-style plan review — inline comments on any block or text selection, approve or request changes
- File snippet preview — click any backtick-wrapped file reference (e.g.
`src/index.ts`) to open a resizable side drawer with syntax-highlighted source code - Plan version diff — compare current plan against previous versions with side-by-side or inline views
- Multi-session support — multiple concurrent Claude Code sessions share one server, switch between plans via tabs
- Line-range file references — supports
src/foo.ts:10-20syntax to show specific line ranges in the snippet drawer - Code diff review — review unstaged/staged/all changes with a file picker, unified diff view, and inline commenting (
/diff-review)
Install
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.sh | bash
Windows (PowerShell)
irm https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.ps1 | iex
This downloads a prebuilt binary, registers it as a Claude Code hook, and installs the /diff-review command. Run it again to update.
To pin a specific version:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.sh | bash -s -- --version v0.1.0
# Windows (PowerShell)
$env:IPE_VERSION="v0.1.0"; irm https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.ps1 | iex
Supported platforms: macOS (arm64, x64), Linux (x64), Windows (x64).
Manual Setup
Download the binary for your platform from Releases:
| Platform | Binary |
|---|---|
| macOS arm64 | ipe-darwin-arm64 |
| macOS x64 | ipe-darwin-x64 |
| Linux x64 | ipe-linux-x64 |
| Windows x64 | ipe-windows-x64.exe |
macOS / Linux:
mkdir -p ~/.ipe
curl -fSL https://github.com/eduardmaghakyan/ipe/releases/latest/download/ipe-darwin-arm64 -o ~/.ipe/ipe
chmod +x ~/.ipe/ipe
Windows (PowerShell):
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.ipe" | Out-Null
Invoke-WebRequest -Uri "https://github.com/eduardmaghakyan/ipe/releases/latest/download/ipe-windows-x64.exe" -OutFile "$env:USERPROFILE\.ipe\ipe.exe"
Then add the hook to your Claude Code settings (~/.claude/settings.json for global, .claude/settings.json for project-level, or .claude/settings.local.json for local-only):
{
"hooks": {
"PermissionRequest": [
{
"matcher": "ExitPlanMode",
"hooks": [
{
"type": "command",
"command": "~/.ipe/ipe",
"timeout": 345600
}
]
}
]
}
}
On Windows, use the full path: "command": "C:\\Users\\<you>\\.ipe\\ipe.exe"
To also enable the /diff-review slash command, create ~/.claude/commands/diff-review.md — see install.sh for the template.
Key details:
"matcher": "ExitPlanMode"— the hook only fires when Claude callsExitPlanMode, not on other permission requests."timeout": 345600— 4 days in seconds. Generous window for reviewing plans. The process blocks until you approve or deny.- Verify your hook is registered by running
/hooksinside Claude Code.
Usage
- Work with Claude Code normally. When Claude generates a plan and calls
ExitPlanMode, IPE intercepts the request. - A browser tab opens automatically showing the plan.
- Add comments: Select any text → click "Add Comment", or hover a block and click the "+" button in the left gutter.
- General feedback: Use the text area at the bottom of the plan for comments not tied to a specific block.
- Accept: Click the green "Accept" button. Claude proceeds with the plan.
- Request Changes: Click the amber "Request Changes" button. Your inline comments and general feedback are sent back to Claude.
- The browser tab closes automatically after submitting.
Diff Review
Review code changes interactively before committing:
- Run
/diff-reviewin Claude Code (or~/.ipe/ipe diff-reviewdirectly). - A browser tab opens showing changed files with a unified diff view.
- Click files in the left sidebar to navigate between them.
- Add inline comments on any diff line using the "+" gutter button.
- Approve or Request Changes — feedback is sent back to Claude.
Options: --staged (staged changes only), --all (all changes vs HEAD).
Configuration
| Variable | Description | Default |
|---|---|---|
IPE_BROWSER |
Command to open the browser (e.g. firefox, google-chrome) |
Platform default |
IPE_PORT |
Base port for the HTTP server (tries up to 10 ports in range) | 19450 |
Platform defaults: open (macOS), xdg-open (Linux), cmd /c start (Windows).
The UI supports light and dark themes — toggle with the sun/moon button in the toolbar. Your preference is saved across sessions.
Development
Requires Bun for development.
Dev preview — run the UI with Vite dev server and mock API (HMR, no hook server needed):
cd packages/ui && bun run dev
Opens at http://localhost:5173 with a sample plan. Approve/Deny actions log to the terminal.
Build — compile the standalone binary:
bun run build
Produces ./ipe — a self-contained executable that embeds the Bun runtime and the built UI.
Manual testing — pipe a fake plan into the binary:
printf '{"tool_input":{"plan":"# Test Plan\\n\\n## Step 1\\nDo something"},"permission_mode":"default"}' | ./ipe
Tests:
bun run test # unit + integration tests
bun run test:e2e # Playwright browser tests
bun run test:all # everything
Formatting:
bun run format # auto-fix
bun run format:check # check only
Uninstall
macOS / Linux:
rm -rf ~/.ipe
rm -f ~/.claude/commands/diff-review.md
Windows (PowerShell):
Remove-Item -Recurse -Force "$env:USERPROFILE\.ipe"
Remove-Item -Force "$env:USERPROFILE\.claude\commands\diff-review.md" -ErrorAction SilentlyContinue
Then remove the ExitPlanMode hook entry from ~/.claude/settings.json.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found