Design Philosophy
The principles please is built around.
No hand written git
Every git operation a developer needs is reachable through a please command. The goal is that you never need to drop down to raw git yourself.
Never a dead end
Running a please command outside a git repository does not just refuse with an error. please asks whether to initialize one right there, so a plain folder never feels broken.
No working tree clutter
please’s own local state, cached project context, saved please run decisions, and similar, never appears as a junk folder in git status. It lives inside .git/please/, or under your home directory when there is no repository yet. The one exception is .please/instructions.md, which is meant to be committed and shared with your team.
Explicit overrides, not blanket blocks
Guardrails, the sensitive file check and the junk directory check, can always be bypassed by staging the file yourself first. please assumes intent over blocking outright.
Bounded AI latency
The model’s own response time is not something please controls, but everything around it is. Requests are timeout bounded, progress is printed so the CLI never looks frozen, and the model is auto selected once at setup, self healing on failure, rather than re selected on every call.
Destructive operations require confirmation
Anything that can discard work, such as please sync exactly, explains the consequences up front and requires explicit confirmation.
See Safety Nets for the full picture, including the extra layer that applies inside agent mode.