Skip to content

[FEATURE]: \--worktree\ / \-w\ CLI flag for git worktree isolation #35471

Description

@atpaawej

Feature hasn't been suggested before.

Summary

OpenCode already has a mature worktree system — a full Worktree module, Desktop workspace UI, TUI slash commands via plugins, HTTP API endpoints, and .worktreeinclude support. However, it lacks a --worktree CLI flag that would let users start an isolated worktree session directly from the command line, similar to Claude Code's -w / --worktree flag.

Motivation

A --worktree CLI flag would enable:

  1. One-shot isolated sessions: opencode --worktree fix-auth-bug — creates a worktree, opens a session inside it
  2. PR workflow: opencode --worktree "#1234" — creates a worktree from a PR branch
  3. CI/scripting: Non-interactive worktree creation for automation
  4. Quick context switching: Spin up parallel isolated environments from the terminal without opening the Desktop app

Proposed Behavior

Based on the existing spec (commit 55b19fe on a fork) and Claude Code's model:

opencode --worktree <name>        # create with custom name
opencode --worktree "#1234"       # PR mode — create from PR
opencode --worktree               # auto-generate random name

Suggested defaults:

  • Storage location: .opencode/worktrees/<name>/ (repo-local) or keep existing ~/.local/share/opencode/worktree/<project-id>/ (global)
  • Branch naming: worktree-<name> or opencode/<name> (configurable?)
  • Base ref: origin/HEAD (remote default) with optional config
  • Session ID auto-bound to worktree name (mutually exclusive with --session)

Related Precedent

  • The Desktop app already supports workspace (worktree) creation via right-click -> Enable Workspaces
  • Community plugins exist for CLI-like workflows (DanHenton/opencode-worktree, sven1103/opencode-worktree-workflow, stephengolub/opencode-workspaces) — but none can add a true CLI flag due to plugin API limitations
  • A detailed spec was drafted at obukhovaa/opencode commit 55b19fe but never merged
  • .worktreeinclude support was added in PR feat(worktree): add .worktreeinclude support for copying gitignored files to new worktrees #25379 (May 2026)

Plugin Limitation

Plugins cannot register CLI flags — the yargs CLI is hardcoded. This must be implemented as a core PR in packages/opencode/src/cli/cmd/.

Existing Infrastructure

The plumbing already exists:

  • packages/opencode/src/worktree/index.tsWorktree.create(), Worktree.remove(), Worktree.list(), Worktree.reset()
  • packages/opencode/src/control-plane/adapters/worktree.tsWorktreeAdapter implements the generic WorkspaceAdapter interface
  • HTTP API: POST /worktree, GET /worktree, DELETE /worktree
  • Desktop: full workspace management UI

The missing piece is just the CLI integration layer.

Related Issues

This issue is specifically about the CLI integration layer — the yargs flag parsing, session-to-worktree binding, and PR mode. The config knobs in #33332 and #14032 are prerequisites for a polished implementation but not the same request.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions