How to Review Your Agent's Code Changes from Your Phone

Your agent just finished a feature build. Grass lets you review every file it touched — diffs, syntax highlighting, line numbers — right from your phone.

TL;DR: When your AI coding agent finishes a task, the question "what did it actually do?" has two answers depending on where you are. At your desk, Stage CLI (just released, 43 points on Hacker News) gives you syntax-highlighted, chapter-organized diffs in your browser. Away from your desk, Grass's built-in diff viewer surfaces the same git diff HEAD output on your phone — color-coded, with file status badges and line numbers — so you can review before committing without touching a laptop.


Stage CLI launched this week and hit the front page of Hacker News. The founders' framing is worth quoting directly: "The bottleneck isn't writing code anymore, it's reviewing it." Stage organizes your agent's changes into logical chapters instead of raw file-tree order, opens in your local browser, and has no mobile interface. That's not a criticism — it's the right tool for desktop review sessions. The problem it explicitly doesn't solve is what happens when your agent finishes a two-hour refactor and you're not at your laptop.

This guide covers both surfaces. You'll get a concrete walkthrough of Grass's phone-native diff viewer, understand when Stage CLI is the better call, and leave with a decision tree for the moments in between.


What problem does mobile diff review actually solve?

AI coding agents — Claude Code, Codex, Open Code — run autonomously and pause for approval when they want to execute a command or write a file. When an agent finishes a longer task, the real review work begins: did it touch only the files you expected? Did it introduce anything you wouldn't have approved? Developers on r/AI_Agents have put it plainly: "agents can ship PRs faster than senior devs can meaningfully review them. Once agents start touching business logic or data transformations, passes the tests isn't good enough."

The diff review step is the one moment where human judgment can't be automated away. The question is whether you can exercise that judgment only at your desk, or whether you can do it from anywhere your day takes you.


What are the three tools for agent diff review in 2026?

Stage CLI (stagereview.app, released May 2026) is the desktop tool. Run npx stage in your repo and it opens a local browser UI that organizes your git diff HEAD into logical chapters — grouped by what changed and why, not alphabetical file order. It's elegant for thorough review sessions at a keyboard. It requires a browser and has no mobile interface.

Claude Code Remote Control (research preview, Max tier only) gives you mobile session control and push notifications — you can kick off tasks and get pinged when Claude needs attention. What it doesn't provide is a diff viewer. You can see that the agent finished, but reviewing what it actually changed requires a separate tool.

Grass (@grass-ai/ide, open-source MIT) bridges the gap: it runs a local HTTP server on your machine, surfaces a native iOS/Android app with a built-in git diff HEAD viewer, and lets you review exactly what your agent changed before you commit. The diff viewer shows per-file views with color-coded additions and deletions, file status badges (M/N/D/R), and line numbers on both sides. Setup takes five minutes via QR code.


When should you use Stage CLI vs. phone review vs. both?

The three tools cover different moments in the same workflow — they're complementary, not competing.

Situation Best tool Why
Agent finished, you're at your desk Stage CLI Chapter organization, full browser UI
Agent finished, you're away from desk Grass diff viewer Same data, native phone rendering
Agent mid-task, waiting for tool approval Grass permission modals Approve/deny from anywhere
Long overnight run, review in the morning Grass Session persists, diff ready on wake
PR review with teammates, post-merge Stage CLI + GitHub PR review Chapter view + inline comments
Quick check before committing from laptop Either Grass is faster to open; Stage is more organized

The short version: Stage CLI is the right tool when you're at a keyboard. Grass's diff viewer is the right tool when you're not.


How do you set up Grass to review agent diffs from your phone?

Prerequisites

  • Node.js 18+ on your development machine
  • Claude Code (claude CLI) installed and authenticated, or Opencode (@opencode-ai/sdk)
  • Grass iOS app (or Android/web client)

Step 1: Install the Grass CLI

npm install -g @grass-ai/ide

Step 2: Start the server in your project directory

cd ~/projects/your-repo
grass start

Output:

Starting grass server...
  workspace: /Users/you/projects
  port: 32100 (auto-selected from 32100–32199)
  available agents: claude-code, opencode

  Local Network  http://192.168.1.42:32100

  [QR code]

  Scan to open on your phone

Multiple grass start instances can run simultaneously in different directories — each picks a free port from 32100–32199.

Step 3: Connect your phone via QR code

Open the Grass app, tap "Scan QR Code," and point your camera at the terminal output. The app saves the server URL and connects immediately. No relay, no cloud account required — your phone talks directly to your machine over WiFi.

Step 4: Select your repo and start the agent

In the app: tap your repo → choose Claude Code or Opencode from the picker → start a new session or resume an existing one. Type your task prompt. The agent runs on your laptop; the app streams its progress in real time.

Step 5: Open the diff viewer when the agent finishes

When the agent completes a task, tap the Diffs button in the chat header. The app calls GET /diffs?repoPath=<path> against your server, which runs git diff HEAD and returns the output parsed into per-file views.

What you see on screen:

  • File list with status badges: M (modified), N (new file), D (deleted), R (renamed)
  • Line numbers on both sides: old line number on the left, new on the right
  • Color-coded changes: additions in teal (#2dd4a8), deletions in red (#ff5f57)
  • Syntax highlighting for TypeScript, JavaScript, JSX, TSX, Python, JSON, Bash

For a TypeScript file where the agent modified a function:

M  src/api/handler.ts

- async function processRequest(req: Request) {
-   const data = req.body
+ async function processRequest(req: Request): Promise<Response> {
+   const data = await validateRequest(req.body)

The color contrast is deliberately high — readable at a glance on a phone screen in variable lighting. That matters because mobile diff review happens in moments — between meetings, on a commute, waiting for coffee.

Step 6: Handle any pending permission requests

If your agent stopped mid-task to request approval for a tool call — a bash command, a file write, a file edit — a permission modal appears automatically. It shows the tool name badge and a syntax-highlighted preview of exactly what will execute. Tap Allow (green) or Deny. Haptic feedback confirms the action and the agent continues or stops based on your response.


How does Grass compare to reviewing diffs over SSH?

SSH was the first approach most developers tried for mobile agent access. The community consensus on why it fails for diff review is consistent across threads:

  • Connections drop when switching from WiFi to cellular, breaking your review mid-stream
  • Mobile terminal apps don't render git diff with useful formatting — no syntax highlighting, touch navigation is painful
  • No notifications when the agent finishes — you're checking manually
  • Claude Code's own diff viewer, task panels, and changed-files sidebar are lost over SSH — the terminal UI collapses entirely over a remote connection

As one developer described after two weeks of trying SSH: "Setting it up properly took way longer than expected. Connection would drop when I switched from WiFi to cellular. Mobile terminal apps are frustrating for anything beyond basic commands. Had to manually check when tasks completed. After 2 weeks I just gave up on it."

Grass uses HTTP + Server-Sent Events instead of SSH. The connection survives network switches because Last-Event-ID headers let the app resume the event stream from exactly where it left off after a reconnect. For a deeper breakdown of what specifically breaks over SSH, see What Breaks When You Run Claude Code Over SSH — And Three Fixes.


What does Grass do that Stage CLI cannot?

Stage CLI is purpose-built for desktop review and it's good at it. The gap it explicitly doesn't cover:

  • No mobile interface. The CLI opens a local browser — useful at a desk, not from a phone.
  • No permission approval. Stage shows you what changed after the fact. Grass intercepts tool approval requests mid-session.
  • No session control. You can't send follow-up prompts or redirect the agent from Stage. Grass's chat interface lets you correct course immediately after reviewing a diff.
  • No laptop-independent review. Stage CLI is a local tool. Grass's always-on cloud VM (codeongrass.com) keeps agent sessions running even when your laptop is off, so the diff is waiting for you on your phone when you need it.

The right framing is that Stage CLI solves "how to read diffs at your desk." Grass solves "how to review diffs and handle approval gates when you're not at your desk." Different moments, different tools, same underlying goal.

For more on the overall approval gate workflow, see How to Build Human-in-the-Loop Approval Gates for AI Coding Agents.


Troubleshooting

Diff viewer shows nothing: Your agent may have committed its changes rather than leaving them as uncommitted diffs. Run git diff HEAD in your terminal to verify. If the agent committed, git diff HEAD~1 shows the last commit's changes.

Grey connection dot in the app: Pull-to-refresh the server list. The app polls /health every 10 seconds — a manual refresh usually recovers stale connections.

Agent not listed as an option: Grass detects available agents at startup by checking for the claude CLI binary and @opencode-ai/sdk. Restart the server after confirming claude --version works in your terminal.

Diff too large to navigate on mobile: This usually means the agent touched more files than expected — a good signal to review scope. Open Stage CLI on your laptop for the chapters view, which handles large diffs better by organizing them semantically.


What's next after approving the diff?

Once you've confirmed the changes look correct from your phone:

  • Commit: Send a prompt to the agent in the Grass chat — "commit these changes with message 'feat: add input validation'" — and it runs the git commands for you.
  • Push: Same approach — prompt the agent to push the branch.
  • Redirect: If the diff shows something unexpected, send a correction prompt immediately. The session is still live; the agent picks it up.

For the full task-to-PR workflow, see The CORE Agentic Workflow: Task → Plan Review → Approve → PR.


FAQ

How do I see what my Claude Code agent changed from my phone?
Install the Grass CLI (npm install -g @grass-ai/ide), run grass start in your project directory, scan the QR code with the Grass app, and tap the Diffs button after your agent finishes a task. The app renders git diff HEAD with color coding (teal additions, red deletions), file status badges (M/N/D/R), and line numbers on both sides — readable on a phone screen without a terminal.

What is Stage CLI and does it work on mobile?
Stage CLI is a local diff review tool released in May 2026 that organizes git diff HEAD into logical chapters in your browser. It's the right tool for desktop review — elegant chapter organization, full browser rendering. It has no mobile interface: the CLI opens a local browser, not a phone app. Stage CLI and Grass's diff viewer solve the same underlying problem on different surfaces.

How do I review agent diffs without being at my laptop?
You need a server that stays running when you're away. The Grass local CLI (grass start) keeps running as long as your laptop is on. For fully laptop-independent review, Grass's cloud VM product (codeongrass.com) runs agents on an always-on Daytona VM — the diff is available on your phone regardless of whether your machine is sleeping. Free tier: 10 hours, no credit card.

What is the difference between reviewing a diff and approving an agent action?
Diff review happens after the agent finishes — you're inspecting all the changes it made during the session as a batch. Permission approval happens mid-session — the agent pauses and asks whether to proceed with a specific tool call (run a bash command, write a file). Grass handles both: the diff viewer for post-task review, and permission modals that forward to your phone in real time during the session.

Does the Grass diff viewer support all programming languages?
Grass provides syntax highlighting for TypeScript, JavaScript, JSX, TSX, Python, JSON, and Bash. Other file types show as plain-text diffs with color coding and line numbers but without language-specific token coloring. Binary files are excluded from the diff view entirely.


Published by Grass — a machine built for AI coding agents. Always-on cloud VM with Claude Code, Codex, and Open Code pre-loaded, accessible from your laptop, phone, or automation.