Tools
Code
Claude Code session orchestration: dispatch, monitor, comment, and review draft PRs without leaving ProductOS.
The Code page is the in-app view of your connected repositories and of every Claude Code run your workspace dispatched. You can browse what's indexed, drill into any session, and cancel, retry or reply from one place.
What you'll see
- Left rail: a Claude Code Sessions entry at the top, then every indexed repo grouped by GitHub connection
- Repo tabs: Files, Docs, Issues, Pull Requests, Commits, Linked, for the selected repo
- Session list: status (
queued | running | succeeded | failed | cancelled), repo · branch, linked feature, when it started, summary - Live status: the list re-polls every 4 seconds while any session is
queuedorrunning - Search box: one search across every indexed repo
- On a phone or tablet: the left rail becomes a row of chips (Sessions, then each repo) above the page. Where there isn't room for a list and its detail side by side, the session list, file list and doc list show first, and opening one replaces the list with a link back
Session detail
- Input sent: the full prompt dispatched (feature spec + linked context)
- Transcript: the run's progress messages, polled every 3 seconds while the session is active, with a toggle between curated progress and the raw stream
- Artifacts: files the run attached
- View PR: link to the GitHub PR once one exists
- Reply box: write to Claude. A run still going reads the reply at its next progress report. A reply to a finished cloud run starts a follow-up run, after you confirm: a new session on the same branch and pull request (a new one if that pull request has merged or closed), with your reply as its instructions, which opens in its place. The two sessions link to each other, and retrying a follow-up keeps its branch. A finished local session takes no replies
The per-file diff of a session lives on the feature's Sessions tab, not on this page.
Common actions
- Cancel: marks the session cancelled, revokes its session token, and cancels the GitHub Actions run, found by the session id in the run's title
- Retry: re-dispatches the same feature, repo, prompt override and model on the same branch name numbered for the retry (
wrk-000123-sidebar-flyout-retry-1, then-retry-2). Offered on a finished session, which is left untouched, and on a cloud session stillqueued, which it closes once the new run is dispatched - Stuck notice: a cloud session
queuedfor two minutes without checking in links to its GitHub run; the usual cause is a missingANTHROPIC_API_KEYrepository secret. A session readsqueueduntil GitHub starts the run, and a run that fails closes its session asfailedwith the reason - Mark complete: manual flip for a local session, with a one-line summary
- Reply: post against the session (
POST /api/v1/sessions/{id}/commentwith{ "message": "..." }; add"follow_up": trueto let a reply to a finished cloud run start a follow-up, which otherwise answers 409). A cloud session that still readsrunninghas its run looked up on GitHub first, so a reply to a run that has really finished starts a follow-up instead of waiting
Repo surface
Once a repo is indexed via the GitHub App, the page also surfaces repo-level signals alongside sessions:
- Repo health card: open PRs and merges this sprint, open issues with a stale (over 30 days) callout, commits this sprint, CLAUDE.md and AGENTS.md freshness, and a "last sync failed" pill when indexing errored.
- Update CLAUDE.md / AGENTS.md: proposes a refreshed file from the indexed repo, shows it as a diff you can edit, and opens a PR on a new branch with the result.
- Workspace-scoped search: the search box matches across indexed file paths, doc contents, issue and PR titles, commit messages and symbols from every connected repo, so you can find a referenced issue without context-switching to GitHub.
- File preview cache: file contents are fetched from GitHub on demand and held in a short-lived (about an hour) in-memory cache, so repeat opens don't burn against your installation's API quota.
Where sessions come from
Three triggers:
- Send to Claude Code (a GitHub Action) or Open in Claude Code (local) on any feature page
start_sessionfrom the MCP connector in a Claude Code editor session- Direct API:
POST /api/v1/features/{id}/dispatch-claude-code
All three end up here.
Related
- Connecting GitHub: required for dispatch
- Using ProductOS with Claude Code, both paths explained
- MCP server: the editor-side counterpart