Devotd Github
NewDeveloper tools

init-co-jp/diff-tour b47b39f — Writing tours with Pi 1.5 support

diff-tour added Pi 1.5-or-later 1.x as an LLM for authoring tours, and blocked tool calls and paths outside the export directory with its own extension pi-guard.ts.

Repositoryinit-co-jp/diff-tour ↗

diff-tour added Pi 1.5-or-later 1.x as an LLM for authoring tours, and blocked tool calls and paths outside the export directory with its own extension pi-guard.ts.

GitHub description: Walk through a diff the way a senior engineer reads it. A read-only TUI that turns a git change into a guided tour.

stars
★ 363
Forks
27
Language
Go
License
MIT
Latest release
v0.6.1
Read original source ↗View on GitHub ↗

init-co-jp/diff-tour is a read-only TUI (terminal UI) that walks through a single git change in the order in which a senior engineer would read the code. The commit b47b39f of November 2, 2026 added Pi to the list of LLMs used to author tours. On the settings screen, if Pi 1.5 or later 1.x is present in PATH, Pi is offered as an option, and other versions are shown as unsupported. Because Pi can silently ignore unknown long flags, this is a way to rule out in advance old versions that lack the required flags. This change is on the order of 692 added lines and 11 deleted lines, and the Pi implementation newly came in as internal/generate/pi.go, pi-guard.ts, and pi_test.go. The source is https://github.com/init-co-jp/diff-tour/commit/b47b39f05ff66101a9066292e38d17b0cedda9db.

The problem directly solved by adding Pi is permission management. Pi has no permission or sandbox feature, so even when allowing only the four read tools read, grep, find, and ls, the path restriction has to be enforced on the tour side. The tour loads pi-guard.ts, an extension it created itself at a temporary location outside the export directory, via -e, and rejects all other tools as well as all paths outside the export directory (.., absolute paths, ~, symbolic links). It does not read the user's extensions, Pi's built-in extensions, MCP servers, skills, prompt templates, or AGENTS.md, and it does not trust the repository's .pi directory either. It does not save sessions, and it turns off update checks and downloads, and telemetry, all of them. Login and models are still taken from ~/.pi/agent as always.

However, the README explicitly states that Pi support is at an experimental stage. On an actual Pi 1.5.0 on Linux, it was confirmed that every attempt to read outside the export directory by every possible means available to the read tools was rejected, but the only thing that completed a tour all the way through was a dummy model (TestPiGuard) that mimics the specified behavior, and there is still no case of completing one with a real model through Pi. There also remains the possibility that the extension mechanism on which the guard depends will change in the next major version. Since a tour is a task in which the LLM reads not only the diff but also the files around the change in order to produce an explanation, it is premature to say that explanation quality has been secured when only read-only behavior has been verified.