Skip to content

fix: pi starts with its models in a pane set to this folder only - #63

Merged
nyxene merged 1 commit into
masterfrom
fix/59-pi-folder-only
Oct 18, 2026
Merged

nyxene merged 1 commit into
masterfrom
fix/59-pi-folder-only

Conversation

@nyxene

@nyxene nyxene commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Closes #59

pi takes a lock directory <file>.lock next to a file before reading it. Under This folder only every write into ~/.pi is denied except the manifest's data, which listed only sessions, so pi could not read its settings or keys and started with no models. The manifest now also allows ~/.pi/agent/*.lock: only a name ending in .lock directly in that folder, nothing inside it. Settings, keys, mcp.json, extensions, skills, prompts, npm packages, install/ and bin/ stay read-only.

Measured with the Sandbox log under the real profile: pi attempts exactly settings.json.lock, auth.json.lock and models-store.json.lock. Test: folder_only_lets_pi_take_its_locks_but_not_change_what_it_reads builds the profile from the built-in manifest and runs it under sandbox-exec (red without the manifest line, green with it). Live: before, EPERM and "No models available"; after, pi starts with its model. scripts/gates.sh exit 0.

Known and accepted: pi cannot record lastChangelogVersion in settings.json there, so it shows its changelog on each start. MCP servers started with npx do not run in such a pane (no write to ~/.npm, no registry): install them locally and name the binary.

🤖 Generated with Claude Code

pi takes a lock directory beside settings.json, auth.json and
models-store.json before it reads them. Its manifest now lists
~/.pi/agent/*.lock as data, so only those lock directories become
writable; the files themselves, extensions, skills, prompts, npm
packages, install and mcp.json stay read-only.

Closes #59

Co-Authored-By: Claude <noreply@anthropic.com>
@nyxene
nyxene force-pushed the fix/59-pi-folder-only branch from 68e18a9 to 2ce26d0 Compare October 18, 2026 21:38
@nyxene
nyxene merged commit e92d5fb into master Oct 18, 2026
1 check passed
@nyxene
nyxene deleted the fix/59-pi-folder-only branch October 18, 2026 21:39
nyxene pushed a commit that referenced this pull request Oct 18, 2026
Release pull request, maintained by release-please. Merging it creates
the tag and a draft GitHub release; then run `scripts/publish-binary.sh
vX.Y.Z` from a terminal to attach the macOS binary and publish the
release.
---


## [0.12.4](v0.12.3...v0.12.4)
(2026-10-18)


### Fixed

* a message an agent has taken no longer counts as unread
([#61](#61))
([2680e48](2680e48))
* a restarted pane also drops the old program's scroll region, origin,
insert and charset ([#68](#68))
([7bc0f18](7bc0f18))
* pi reaches every provider it ships with in an Only these providers
pane ([#62](#62))
([4e8a5e1](4e8a5e1))
* pi starts with its models in a pane set to this folder only
([#63](#63))
([e92d5fb](e92d5fb))
* pi's provider list leaves out the Cloudflare hosts that relay any URL
([#69](#69))
([17d833c](17d833c))
* restarting a pane's program starts its agent again with clean terminal
modes ([#64](#64))
([c1e398e](c1e398e))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pi gets no models in a This folder only pane

1 participant