# Code

> Claude Code session orchestration: dispatch, monitor, comment, and review draft PRs without leaving ProductOS.

Source: https://productos.ca/documentation/pages/tools/code (last reviewed 2026-09-24)

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](https://productos.ca/documentation/guides/integrations/github), 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.

## Related

- [Connecting GitHub](https://productos.ca/documentation/guides/integrations/github): required for dispatch
- [Using ProductOS with Claude Code](https://productos.ca/documentation/guides/ai/claude-code), both paths explained
- [MCP server](https://productos.ca/documentation/api/v1/mcp): the editor-side counterpart
