fork_linked_project
FORKS a linked project: makes an INDEPENDENT COPY of it that you own, then repoints the host block to that copy. It is the escape hatch when a linked project stays READ-ONLY — access bounded to a shared block (cell_grant), write lock set on the target, PINNED version, or a role that does not write on the target — and you want to be able to modify it without depending on those conditions (a role that writes, on a NON-bounded and NON-locked link, already opens inline editing — see link_project_to_cell). READ access to the target is enough to fork. The copy is a detached SNAPSHOT: it will no longer follow any change to the original, and the original is never modified. If the link was PINNED to a version, THAT version is copied. The new project counts toward your project cap, and writing into it requires TARGETING it — over MCP, expectedProjectId on each write or set_active_project; in the in-app chat neither exists: nothing is written there this turn, the interface (or focus_view dive, run at turn end) dives in, and the writing happens on the NEXT turn. What is NOT copied: tasks, comments, documents and attachments, the version history, shares, project metadata (agent checkpoints, set_project_metadata), pending access requests, block identifier aliases (a renamed former identifier will no longer resolve in the copy — only canonical identifiers are carried over), the chat conversation history, as well as the plans in progress, reviewable proposals and meeting suggestions attached to it. Linking a project WITHOUT copying it (it stays live and shared) is the job of link_project_to_cell; starting an EMPTY sub-view is the job of create_nested_project.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the created project. Omitted, it takes the label of the link followed by " (copy)". | |
| cellId | Yes | ID of the block of THIS project that carries the link to fork. The fork copies the project targeted by this link, then REPOINTS this same block to the copy. | |
| expectedProjectId | No | UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted. |