Engineering

Client Release Agent

Client Release AgentRun
Trigger
Release_Oncall
Skill
cherrypick-to-release.md
Model
Claude Sonnet 4.5

Overview

The Client Release Agent is the always-on release operator for your client application. It handles the full cherry-pick lifecycle — resolving commits across the public and internal repos, waiting for the sync, opening PRs on the right release branches, assigning them to the current oncall, and keeping a live Slack status board updated as PRs move from review to merged to verified.

Every weekday it also runs the daily Sentry digest: pulling new crash issues scoped to the live stable release, ranking them by event volume, and posting the top three to #oncall so the rotation always starts the day with a focused, actionable summary — no manual report-pulling required.

When a release is ready to ship, the agent triggers the Cut New Release Candidate workflow directly from a branch name and posts the run URL back to Slack so the oncall can track progress without leaving their channel.

How to deploy

Clone the repo, open it in Warp, and ask the agent to set itself up:

Clone https://github.com/warpdotdev/client-release-agent-oss.git (or use my
existing clone), then read and follow .warp/skills/setup/SKILL.md to set up the
client release agent.

The agent verifies prerequisites (git, gh, jq, curl), walks you through .env configuration, and validates your Slack, Sentry, and GitHub credentials before finishing.

Setting up manually is a few values and a file: authenticate the GitHub CLI with gh auth login, copy .env.example to .env, then fill in a Slack bot token (SLACK_BOT_TOKEN), a Sentry auth token (SENTRY_AUTH_TOKEN), and the INTERNAL_REPO that holds your release branches. Load it before running the skills:

set -a; source .env; set +a

The Slack app needs the channels:read, channels:history, chat:write, chat:update, usergroups:read, users:read, and users:read.email bot scopes, and the Sentry token needs event:read and project:read. Release conventions (RELEASE_CHANNELS, RELEASE_BRANCH_PREFIX, RC_WORKFLOW_NAME) are optional overrides with sensible defaults.

Configure the daily digest to run on a weekday schedule in Oz — the agent automatically bundles Saturday and Sunday issues into Monday's post and skips weekend runs entirely. For cherry-picks, invoke the agent with a plain prompt like Cherry-pick PR #1234 into stable and preview; it resolves the correct internal commit, waits for the repo sync if needed, and handles both preview and stable channels by default.

Once live, every cherry-pick creates a tracked Slack status message that updates automatically as PRs merge, and the oncall can mark PRs verified directly through the agent without touching GitHub.

Integrations

Out of the box, the agent connects to GitHub for cherry-pick branch operations and PR creation, Sentry for real-time crash issue data scoped to the live stable release, and Slack for oncall notifications, release status tracking, and thread replies.

Additional release signals — internal dashboards, feature-flag rollout data, or custom alerting webhooks — can be wired in via the Oz skill system without modifying the agent's core release logic.