U-Pool 0.4.0 — permission switches & launch at sign-in
Per-provider permission switches, and a launch-at-sign-in toggle for Windows.
Advanced options: checkboxes
Add provider → Advanced options now carries checkboxes that write real keys into the CLI's own config. Each box owns exactly one key while it is ticked, and takes that key back out when you untick it.
| Checkbox | App | Written |
|---|---|---|
| Bypass approvals & sandbox | Codex | approval_policy = "never" + sandbox_mode = "danger-full-access" — the pair --dangerously-bypass-approvals-and-sandbox (--yolo) sets |
| Live web search | Codex | web_search = "live" |
| Bypass permission prompts | Claude Code | permissions.defaultMode = "bypassPermissions" — the settings form of --dangerously-skip-permissions |
| Skip the bypass warning screen | Claude Code | permissions.skipDangerousModePermissionPrompt |
| Auto-accept file edits | Claude Code | permissions.defaultMode = "acceptEdits" |
| Trust MCP servers from the project | Claude Code | enableAllProjectMcpServers |
The flag itself is never written anywhere — the documented settings equivalent is, so the CLI starts that way without you passing anything on the command line.
What stays yours:
permissions.allow/deny/askand everything else in that block are untouched.- A
defaultModeU-Pool does not itself write (plan,auto) is left alone. - The Codex bypass pair is only reclaimed when both halves are present, so a lone hand-written
sandbox_mode = "danger-full-access"survives. - A
permissionsvalue that is not an object is refused with a warning instead of being replaced. - Codex keys land at the root of
config.toml, never inside[model_providers.<slug>]where Codex would ignore them.
First-run import reads every flag back out of an existing config, a provider running wide open is badged Bypass in the list, and switching to the official entry clears all of it.
Note on
[tools] web_search = true: Codex parses that boolean and then discards it — it is a no-op. The switch that works is the top-levelweb_search = "live", which is what U-Pool writes.
Launch at sign-in (Windows)
Settings → Startup has an on/off switch. It writes one REG_SZ value named U-Pool under HKCU\Software\Microsoft\Windows\CurrentVersion\Run — no elevation, no scheduled task, no shortcut — and deletes it again when you switch it off. The command is quoted for CreateProcess (pythonw -m upool from source, the bundled U-Pool.exe when frozen) and repointed at the current build on every launch, so a moved bundle cannot leave a dead command behind. Your choice is remembered in ~/.u-pool/settings.json.
It only ever repoints — an entry you deleted with regedit or an autoruns tool stays deleted. And if you switch U-Pool off under Task Manager → Startup apps, Windows keeps that decision: U-Pool reports it and links you to the Windows page rather than quietly overriding you. The switch still removes the entry from here, veto or not.
Also
- Version is single-sourced from
upool.__version__. - 96 tests, including registry isolation so a test run can never touch your real startup entry.
- New
src/upool/settings.pyandsrc/upool/autostart.py; newCheckboxandSwitchprimitives in the UI.
Heads-up when upgrading
These keys become U-Pool-managed. If you had set enableAllProjectMcpServers or web_search by hand and you switch provider with the box unticked, they are removed — the same deal the ANTHROPIC_* env vars have had since the first release. Every switch backs up the file it overwrites first, ten deep, under ~/.u-pool/backups/.
pip install -e ".[dev]"
cd ui && npm install && npm run build && cd ..
python -m upool