ProductOSDocs

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 queued or running
  • 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 still queued, which it closes once the new run is dispatched
  • Stuck notice: a cloud session queued for two minutes without checking in links to its GitHub run; the usual cause is a missing ANTHROPIC_API_KEY repository secret. A session reads queued until GitHub starts the run, and a run that fails closes its session as failed with 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}/comment with { "message": "..." }; add "follow_up": true to let a reply to a finished cloud run start a follow-up, which otherwise answers 409). A cloud session that still reads running has 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:

  1. Send to Claude Code (a GitHub Action) or Open in Claude Code (local) on any feature page
  2. start_session from the MCP connector in a Claude Code editor session
  3. Direct API: POST /api/v1/features/{id}/dispatch-claude-code

All three end up here.

Last reviewed 2026-09-24