This is a follow-up to our pieces-os request (thread). pieces-for-developers is the desktop client app for Pieces (companion to the already-approved pieces-os snap). Our Verified Publisher status (Mesh Intelligent Technologies Inc., development@pieces.app) is already approved, and that vetting request listed both pieces-os and pieces-for-developers.
This request is associated with revision 105 (version 6.0.2). The package passes all automated checks (69 passes, 0 warnings); the only items flagged for manual review are the 7 personal-files plug declarations below.
These interfaces are entirely OPTIONAL for the user. The core app (recalling and searching your long-term workflow memory) is fully functional with none of them connected. They exist solely to power the optional MCP integration feature, and each is requested as a manual connection so the user must explicitly opt in per client.
-
name: pieces-for-developers
-
description: Pieces for Developers is the desktop client app for Pieces — a local-first, long-term memory engine for your workflow. It automatically captures and resurfaces the context of your work (code, docs, chats, links and more) across your toolchain, lets you recall and search those memories using natural-language and time-based queries, and connects that personal context to AI tools (Cursor, Claude, Codex, Gemini, VS Code/GitHub Copilot, Antigravity) over MCP. Private by design and local by default.
-
snapcraft: PRIVATE
-
upstream: PRIVATE
-
upstream-relation: official package
-
interfaces:
-
mcp-cursor-config (personal-files — write $HOME/.cursor/mcp.json)
- request-type: manual-connection
- reasoning: On user request, the app writes the Pieces MCP server entry into Cursor’s MCP config file so Cursor can connect to the user’s local memory. Scoped to the single config file (least-privilege). Manual / opt-in only.
-
mcp-claude-desktop-config (personal-files — write $HOME/.config/Claude/claude_desktop_config.json)
- request-type: manual-connection
- reasoning: Writes the Pieces MCP server entry into Claude Desktop’s config file. Scoped to the single config file. Manual / opt-in only.
-
mcp-claude-code-config (personal-files — write $HOME/.claude.json)
- request-type: manual-connection
- reasoning: Claude Code stores user-scope MCP servers in
~/.claude.json; the app writes the Pieces MCP server entry there. Scoped to the single config file. Manual / opt-in only.
-
mcp-gemini-config (personal-files — write $HOME/.gemini/settings.json)
- request-type: manual-connection
- reasoning: Writes the Pieces MCP server entry into the Google Gemini CLI settings file. Scoped to the single config file. Manual / opt-in only.
-
mcp-vscode-config (personal-files — write $HOME/.config/Code/User/mcp.json + read $HOME/.config/Code/User)
- request-type: manual-connection
- reasoning: Writes the Pieces MCP server entry into the VS Code (GitHub Copilot) user-profile
mcp.json. This is the only plug that also requests directory read: unlike the other clients, VS Code does not create mcp.json until the user adds their first MCP server, so we detect whether VS Code is installed by checking for the existence of the ~/.config/Code/User profile directory, which under strict confinement requires read access to it. The app only ever writes to mcp.json itself. Manual / opt-in only.
-
mcp-antigravity-config (personal-files — write $HOME/.gemini/antigravity/mcp_config.json)
- request-type: manual-connection
- reasoning: Antigravity (Google’s IDE) keeps MCP servers in its own subdir under
~/.gemini; the app writes the Pieces MCP server entry there. Scoped to the single config file. Manual / opt-in only.
-
mcp-codex-config (personal-files — write $HOME/.codex/config.toml)
- request-type: manual-connection
- reasoning: Writes the Pieces MCP server entry into Codex’s config file. Scoped to the single config file. Manual / opt-in only.
Privacy & consent: Every one of these interfaces is optional — the app works fully without any of them, and none is auto-connected. Users explicitly enable a given client from the in-app MCP settings UI or via our bundled pieces-for-developers.doctor utility, and no file is written without an explicit user action. Each plug is deliberately scoped to a single config file per client (rather than the whole client config directory) to follow least-privilege; the one exception is the read-only directory check for VS Code described above. Thank you for the review!
1 Like
This request has been added to the queue for review by the @reviewers team.
1 Like
Hi @Pieces-Dev,
Even though the requested path entries are not owned by the snap itself, I am okay with granting manual-connection for this request.
Also, could you please change the interface name so that it exactly reflects what is being granted? For example, mcp-cursor-config should be changed to dot-cursor-mcp-json as it grants access to $HOME/.cursor/mcp.json.
Thanks
The manual-connection posture and per-file scoping are appreciated, and +1 from me on the six single-file write plugs, subject to the interface renames as @shishirsub10 requested.
Few notes:
-
For the record on this and future similar requests: MCP config files define commands that the target applications execute unconfined in the user’s session, so write access to these paths is effectively a code execution grant into the host, gated on the user’s explicit connection. Several of the requested files also carry broader settings for the target application (for example ~/.codex/config.toml includes Codex’s approval and sandbox policy and personal-files write also implies read). This is acceptable under manual connection with an informed opt-in.
-
I am -1 on the directory read for $HOME/.config/Code/User as currently scoped. personal-files directory grants are recursive, so this becomes read access to the entire VS Code user profile (settings.json frequently contains credentials and API keys) in exchange for an install-existence check. Since the plug already grants create/write on ~/.config/Code/User/mcp.json, detection can be done by attempting the write and handling failure or by asking the user in the UI. Please drop the directory read and scope this plug to the mcp.json file only, matching the other six.
With the renames done and the VS Code plug rescoped to the single file, this lgtm. thanks
@Pieces-Dev Kindly let us know once the requested changes are made. Thanks!
1 Like
Hi @shishirsub10 and @0xnishit — thanks both for the detailed review. Both
requested changes are done, in a new build now in the review queue:
revision 106, version 6.1.0. This supersedes revision 105 (6.0.2), which used the previous plug names — please
disregard it, we won’t be releasing that build. The package passes all automated checks; the
only items flagged for manual review are the 7 personal-files declarations below.
1. Interface renames. Each plug name is now derived directly from the path it
grants (leading dot → dot-, separators and dots → -), so the name exactly
reflects what is being granted:
| Previous name |
New name |
Grant |
mcp-cursor-config |
dot-cursor-mcp-json |
write $HOME/.cursor/mcp.json |
mcp-claude-desktop-config |
dot-config-claude-claude-desktop-config-json |
write $HOME/.config/Claude/claude_desktop_config.json |
mcp-claude-code-config |
dot-claude-json |
write $HOME/.claude.json |
mcp-gemini-config |
dot-gemini-settings-json |
write $HOME/.gemini/settings.json |
mcp-vscode-config |
dot-config-code-user-mcp-json |
write $HOME/.config/Code/User/mcp.json |
mcp-antigravity-config |
dot-gemini-antigravity-mcp-config-json |
write $HOME/.gemini/antigravity/mcp_config.json |
mcp-codex-config |
dot-codex-config-toml |
write $HOME/.codex/config.toml |
2. VS Code plug rescoped to the single file. The recursive read grant on
$HOME/.config/Code/User is gone — dot-config-code-user-mcp-json now requests
write on $HOME/.config/Code/User/mcp.json only, matching the other six.
Rather than swap the directory check for another heuristic, we removed
install-detection altogether: our bundled pieces-for-developers.doctor utility
now reports purely on interface connection status, and the app attempts the
write and handles failure. Any file-existence heuristic would misreport a
freshly-connected client as “not installed” anyway, since VS Code doesn’t create
mcp.json until the first MCP server is added.
On your note that write access to these paths is effectively a code-execution
grant into the user’s session, and that several files carry broader application
settings — understood and agreed. That is precisely why all seven are
manual-connection only, opted into per client from the in-app MCP settings UI,
with no file written without an explicit user action.
Could you take a look at revision 106 when you have a chance? Thanks again!
Hi @Pieces-Dev,
Thank you making the changes as requested.
+2 votes for, 0 votes against. Publisher is already vetted. Granting manual-connection to the requested interfaces. Revision 106 now passes the automated review.
1 Like