Skip to content

U-Pool 0.4.0 — permission switches & launch at sign-in

Choose a tag to compare

@U-C4N U-C4N released this 29 Jul 07:52
· 21 commits to main since this release

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 / ask and everything else in that block are untouched.
  • A defaultMode U-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 permissions value 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-level web_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.py and src/upool/autostart.py; new Checkbox and Switch primitives 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