The worktree service now records each checkout it creates as a `plugin:worktree/created` record, folds them in its own `worktree` projection with fork-aware ownership, and reclaims a clean, unreferenced checkout when the Session that created it is archived. The Forge panel reads the service's record and forwards its cleanup state; it no longer writes a `created` record, owns a retention projection, or gates every Session's directory access. Admission registers the attempt inside the Workspace write queue and returns; inspection runs afterwards, reading cold Sessions through the projection cache when mounted and from their log otherwise, with subagent children of an archived ancestor counted as archived. Only a path being removed holds `working-directory/access`, whose request now carries the access's `signal`, and listeners withdraw before the drain. Ignored files no longer retain a checkout, matching Git's non-force removal; processes and terminals are not consulted. The Forge bundle mounts one `worktree` service: the `forge-worktree` row and the `optional-forge-panel` group that isolated a second service are gone, and `forge-panel` is a top-level row. `canRemove`, `remove`, the `forgeWorktreeRetention` projection, and `ForgeWorktreeCleanup` are removed; `WorktreeService.cleanupOf`, `WorktreeCleanup`, and the `worktree/cleanup` Host event replace them. The upgrade guide moves to the current version directory and covers the id removals.
description, kind
| description | kind |
|---|---|
| Enable the change request panel and worktree Sessions from the Plugins page. | package-bundle |
@deepseek-ai/dsh-experimental-forge-bundle
English | 中文
Summary
Review each Session's change requests, checks, and diffs, start a new Session in a Git worktree, or ask the model to create one during a conversation. Enable Change requests & worktrees on the Web or Desktop Plugins page; shipped profiles leave it disabled. GitHub status comes from the Host's signed-in gh CLI; local worktree creation does not require GitHub authentication.
Table of Contents
- Use this package
- Understand the implementation
- Further Exploration
- Model Experience
- Known Limitations and Deferred Work
- Dev Note
Use this package
Open Plugins and enable Change requests & worktrees in the Official group. In a Git workspace, check Worktree in the composer before the first message to start the Session in a new worktree. In a Session whose directory is inside a Git checkout, the header button opens the panel. GitHub pull requests that the Session creates with gh pr create, opens with gh pr view, gh pr edit, or gh pr checkout, or works on as its branch or updates with a later git push, appear as change requests without further steps. Run gh auth login --hostname <host> in a terminal to sign in; the panel shows the command when sign-in is missing. The panel package describes each control.
The same switch enables the model's create_worktree tool. Turning it off removes both the panel and the tool while retaining existing checkouts and branches. For profiles that already selected the standalone worktree bundle, follow the upgrade guide before enabling this bundle.
Understand the implementation
Maintainer details — click to expand
The bundle mounts the forge registry, GitHub provider, Session bindings, the worktree model tool, and the panel as six top-level rows. The tool and the panel share the one worktree service, so one worktree row override configures both, and one archive of a Session reclaims its checkout once. The panel records worktrees requested before a Session starts; model-created worktrees do not acquire the panel's recovery records, but both kinds take part in archive cleanup. The rows use the Session projection, working-directory, filesystem, subprocess, and sandbox services from base-backed profiles; archive cleanup also needs the Workspace registry and Session query of those profiles.
Further Exploration
Forge subsystem · Session bindings · Panel
Model Experience
Indirectly, through the create_worktree tool and the panel’s directory notice for Sessions that start in a worktree.
KV Cache effect
Enabling or disabling the bundle changes the model's tool schema list. Calls append tool results and directory context; see the tool's cache behavior.
Known Limitations and Deferred Work
- GitHub is the only code host provider, and the bundle serves github.com only; a GitHub Enterprise host needs a profile patch that lists it in the
forge-githubrow'shosts. No provider recognizes GitLab or other hosts. - The model has no tool for bound change requests yet.
Dev Note
Working context for maintainers — click to expand
None.