IDE, Desktop, Web & Chrome Integrations

One engine, many surfaces

Intermediate 12 minBuilder
What you'll be able to do
  • Connect Claude Code to VS Code, JetBrains, or Cursor and read /ide status correctly
  • Use the redesigned desktop app for visual diff review, multi-session management, and scheduled tasks
  • Start, control, teleport, and hand off work across web, terminal, and desktop with the exact flags and slash commands
  • Drive Chrome for web automation and testing while watching for screenshot token drain
  • Explain why CLAUDE.md, settings, and MCP behave identically on every surface
At a glance

Claude Code is one engine wearing many faces: terminal, IDE extensions, a redesigned desktop app, web sessions on claude.ai, and Chrome automation. This lesson tours the non-terminal surfaces and the exact commands that move a single piece of work between them.

  1. 1The mental model: one engine, many surfaces
  2. 2IDE: VS Code, JetBrains, and Cursor
  3. 3The desktop app: visual review, many sessions, scheduled work
  4. 4Web sessions and Remote Control
  5. 5Teleport: pull web work back into the terminal
  6. 6Chrome integration: web automation and testing
  7. 7Why everything stays in sync: shared config

The mental model: one engine, many surfaces

The single most important idea in this lesson: there is only one Claude Code. The terminal CLI, the VS Code / JetBrains / Cursor extensions, the desktop app, web sessions at claude.ai/code, and Chrome automation are all surfaces over the same agentic engine. They differ in where the conversation is rendered and what extra affordances they give you (inline diffs, a visual session list, a scheduler, a browser), not in how Claude thinks.

The practical payoff is that your configuration is portable by default. The same CLAUDE.md hierarchy, the same .claude/settings.json rules and hooks, and the same MCP servers load and behave identically no matter which surface you launch from. You do not re-learn the tool per surface, and you do not maintain parallel configs. Learn the engine once; pick the surface that fits the moment.

text
            ┌──────────── ONE ENGINE ────────────┐
            │  agentic loop · tools · context     │
            └───────────────┬─────────────────────┘
   ┌──────────┬─────────────┼─────────────┬──────────────┐
Terminal   IDE ext.    Desktop app    Web (claude.ai)   Chrome
  CLI    (VS Code /   (visual diffs,  (--remote,        (browser
         JetBrains/   scheduler,      Remote Control)   automation)
         Cursor)      multi-session)
   └──────────┴─────────────┴─────────────┴──────────────┘
        shared: CLAUDE.md · settings.json · MCP servers

Because the surfaces share state, moving work between them is a first-class feature rather than a copy-paste chore — and the rest of this lesson is mostly about the small set of commands that do the moving.

Key insight

Surfaces are views, not forks

You are never choosing a different product. A web session you started on your phone and a terminal session on your laptop are the same kind of object — which is exactly why --teleport and /desktop can hand one to the other without losing the conversation or the branch.

Note

Access still applies

Every surface requires a paid plan — Claude Code is not on the free tier (Pro, Max, Team Premium, Enterprise, or Console). Some surfaces add their own gate: /desktop only appears on macOS and Windows when signed in with a subscription.

IDE: VS Code, JetBrains, and Cursor

The IDE integrations put Claude Code beside your editor so diffs render inline, your active selection becomes context, and edits land in files you can see. Three editor families are supported:

EditorIntegration
VS CodeClaude Code extension (also covers VS Code forks)
JetBrains (IntelliJ, PyCharm, WebStorm, etc.)Claude Code plugin
CursorSupported via the VS Code-compatible extension

There are two ways to run with an IDE connected. You can launch Claude from the editor's integrated terminal, or run the CLI with the --ide flag:

bash
claude --ide

--ide auto-connects to your IDE if exactly one valid IDE is detected. If zero or several are found, it does not guess — you connect manually instead. To check the state of the connection at any time, run the slash command:

text
/ide

/ide manages IDE integrations and shows status — which editor is attached, or that none is. When connected, Claude can read your current selection and open files, and proposed edits appear as reviewable diffs in the editor rather than as terminal text.

The engine is still the engine: your project CLAUDE.md, settings, hooks, and MCP servers all load exactly as they would in a bare terminal. The IDE adds presentation and context plumbing, not a different brain.

Tip

`--ide` is deterministic about ambiguity

The auto-connect only fires when there is exactly one valid IDE. That is a feature: it avoids attaching to the wrong window when you have several editors open. If /ide shows nothing attached, close the extra editors or connect from the one you want, then re-run.

The desktop app: visual review, many sessions, scheduled work

Claude Code ships a native desktop app for macOS and Windows. It was redesigned and released on April 14, 2026, and it is built for the work that a single terminal pane does poorly: reviewing changes visually and juggling several agents at once. Its headline capabilities:

  • Visual diff review — inspect Claude's proposed changes as rendered diffs and approve or reject them, rather than scanning a wall of terminal output.
  • Multi-session management — see all your running and recent sessions in one place and switch between them, instead of remembering which terminal tab holds which task.
  • Scheduled tasks — set Claude Code work to run on a schedule, so routine jobs happen without you babysitting a prompt.

The desktop app is also a handoff destination. From inside any terminal session you can run:

text
/desktop

This continues the current session in the Claude Code Desktop app (alias /app). It carries the conversation over, so a task you started typing in the terminal can finish in the app's visual review UI. As with every surface, it requires macOS or Windows and a Claude subscription, and it loads the same CLAUDE.md, settings, and MCP servers.

Example

When the desktop app earns its place

A refactor touched 14 files. In the terminal you would page through unified diffs; in the desktop app you review them visually, approve the safe ones, and reject the one that drifted. Meanwhile a second session runs a scheduled nightly dependency-bump in the background — both visible in the multi-session list.

Web sessions and Remote Control

Claude Code runs on the web at claude.ai/code — full agentic sessions in the browser, no local terminal required. There are two distinct ways the terminal and the web connect, and they point in opposite directions. Keep them straight:

1. Start a new web session from the terminal — --remote. This creates a fresh session that lives on the web:

bash
claude --remote "Fix the login bug"

The work runs as a web session on claude.ai; your terminal is just the launcher. Use it to kick off cloud-hosted work and then walk away from the laptop.

2. Drive a local session from the web — Remote Control. This makes a session running on your machine controllable from claude.ai (or the app), so you can steer it from another device:

bash
claude --remote-control "My Project"   # flag form, alias -rc
text
/remote-control                          # from inside a running session; alias /rc

/remote-control makes this session available for remote control from claude.ai. There is also claude remote-control [name], which runs a Remote Control server without starting a local interactive session at all.

DirectionCommandWhat lives where
Terminal → new web sessionclaude --remote "..."Session runs on the web
Local session → controllable from webclaude --remote-control / -rc, or /remote-control (/rc)Session runs on your machine, steered from claude.ai

A nice touch that shows the surfaces really are connected: when Remote Control is attached, even cosmetic state syncs — set the prompt bar color with /color blue locally and it updates on claude.ai/code too.

Watch out

`--remote` and `--remote-control` are opposites

--remote sends work out to a new session on the web. --remote-control (-rc) exposes a local session so the web can drive it. Same prefix, mirror-image behavior — picking the wrong one either strands your task in the cloud or fails to offload it.

Teleport: pull web work back into the terminal

Remote Control lets the web reach into a local session. Teleport does the reverse: it pulls a web session down into your terminal, fetching both the branch and the conversation so you can continue locally with full tooling.

Use either the flag at launch or the slash command from inside a session:

bash
claude --teleport
text
/teleport            # alias /tp

/teleport opens a picker, then fetches the branch and conversation for the chosen web session into the current terminal. It requires a claude.ai subscription. The typical loop: start something on the web (or on your phone) with --remote, let it run, then teleport it down to your dev machine when you want to take over with local builds, tests, and debuggers.

That completes the round-trip across surfaces:

text
  --remote  ─────────────▶  Web session (claude.ai/code)
 (terminal launches)              │
                                  │ --teleport / /teleport (/tp)
                         Terminal (local tooling)
                                  │ /desktop (/app)
                         Desktop app (visual review)

Notice that work flows freely in every direction — and because the engine and config are shared, nothing is lost in the move: same branch, same conversation, same CLAUDE.md, same MCP servers.

Tip

Teleport vs. Remote Control, in one line

Teleport moves the web session into your terminal (you now own it locally). Remote Control leaves the session where it is and lets another device drive it. Move it, or steer it — choose based on whether you want local tooling.

Chrome integration: web automation and testing

The Chrome integration lets Claude Code drive a real browser — navigating pages, clicking, filling forms, and taking screenshots — which makes it useful for web automation and for testing UI changes against a running app. Control it with a flag at launch or the slash command in-session:

bash
claude --chrome        # enable Chrome integration
claude --no-chrome     # explicitly disable it
text
/chrome                # configure Claude in Chrome settings

The classic workflow: make a frontend change, then have Claude open the page in Chrome, interact with it, and screenshot the result to verify the change looks right — closing its own verification loop instead of waiting for you to eyeball it.

There is one real cost to respect. Browser screenshots are large and drain tokens fast. Each screenshot is stored in the session at full resolution, and they accumulate — a long automation run can balloon context, slow responses, and in extreme cases cause errors on resume. Treat screenshots as a budgeted resource: capture them only when you need visual confirmation, and /clear or /compact a screenshot-heavy session before it bloats.

Watch out

Watch the screenshot token drain

Chrome screenshots are stored at full resolution and pile up in the session. They cause the worst token drain of any feature here. Ask for screenshots deliberately, not on every step, and clear or compact image-heavy sessions to avoid runaway context and resume errors.

Why everything stays in sync: shared config

All of the movement above only works cleanly because the surfaces sit on one foundation. Three things are shared and behave identically everywhere:

Shared layerWhat it means across surfaces
CLAUDE.mdThe same four-tier memory hierarchy (managed policy → user → project → local) loads the same way, so your project conventions and house rules follow you.
settings.jsonPermission allow/ask/deny rules, hooks, and other settings apply uniformly — a deny rule that blocks git push blocks it on the desktop app and on the web too.
MCP serversThe same Model Context Protocol connections (databases, Notion, Figma, Slack, custom servers) are available wherever you work.

The consequence is a clean operating model: configure once, work anywhere. You are not maintaining a desktop config and a separate terminal config; you are not re-approving the same permissions per surface; you are not wondering whether a hook will fire on the web. Set it up where it belongs in the hierarchy, and every surface inherits it.

A small but important caveat: surface availability still depends on your platform, plan, and environment. /desktop shows only on macOS/Windows with a subscription; teleport and Remote Control need claude.ai auth. The engine and config are uniform; which doors are open depends on where you stand.

Key insight

The portability test

If you ever wonder 'will this rule apply on surface X?', the answer is almost always yes — that is the whole point of one shared engine. The exceptions are surface-gating (plan/platform/auth), not behavior. Behavior is constant.

Try it: Move one task across four surfaces

Take a single piece of work and walk it around the surfaces to feel how the shared engine makes hops lossless. Use any small repo you own.

  1. Confirm shared config. In the repo, run /ide in a terminal session to see the IDE status, then note what CLAUDE.md and MCP servers are loaded (/memory, /mcp). These are what should follow you everywhere.
  2. IDE. Open the repo in VS Code (or JetBrains/Cursor), launch claude --ide from the integrated terminal, and confirm /ide shows it attached. Ask for a tiny change and review the inline diff.
  3. Start on the web. From the terminal, run claude --remote "add a one-line code comment to the main entry file". Verify the session appears at claude.ai/code and let it run.
  4. Teleport it back. In a terminal, run /teleport (or --teleport), pick that web session, and confirm it pulls in the branch and conversation. Continue locally — run the project's tests.
  5. Hand off to desktop. On macOS/Windows with a subscription, run /desktop (/app) and confirm the session continues in the desktop app's visual review UI.
  6. (Optional) Chrome. If your project serves a UI, run claude --chrome, ask Claude to open the page and screenshot one view, then check /context before and after to see the token cost of a single screenshot. Run /clear to reset.

Deliverable: a short note recording (a) that CLAUDE.md/MCP were identical on every surface, (b) one thing the desktop or IDE surface let you do that the bare terminal did not, and (c) the measured context increase from one Chrome screenshot.

Key takeaways

  1. 1There is one Claude Code engine; terminal, IDE, desktop, web, and Chrome are surfaces over it, sharing CLAUDE.md, settings, and MCP identically.
  2. 2IDE: VS Code extension, JetBrains plugin, and Cursor are supported; `claude --ide` auto-connects only if exactly one valid IDE is found, and `/ide` shows connection status.
  3. 3The redesigned desktop app (released April 14, 2026; macOS/Windows) adds visual diff review, multi-session management, and scheduled tasks; `/desktop` (alias `/app`) hands the current session to it.
  4. 4`--remote` starts a new web session at claude.ai/code; Remote Control (`-rc` / `/remote-control`, alias `/rc`) lets you drive a local session from claude.ai — opposite directions.
  5. 5Teleport (`--teleport` / `/teleport`, alias `/tp`) pulls a web session into the terminal with its branch and conversation, completing the round-trip across surfaces.
  6. 6Chrome (`--chrome` / `--no-chrome` / `/chrome`) enables browser automation and testing, but full-resolution screenshots drain tokens fast — capture deliberately and clear bloated sessions.

Quiz

Lock in what you learned

Check your understanding

0 / 4 answered

1.You run `claude --remote "Fix the flaky checkout test"` from your terminal. Where does the work run, and what role does the terminal play?

2.You launch `claude --ide` but Claude doesn't attach to your editor. You currently have both VS Code and a JetBrains IDE open. What is the most likely reason and fix?

3.A teammate kicked off a long task as a web session on claude.ai. You want to take it over on your dev machine with local builds, tests, and a debugger. Which command does that, and what does it bring across?

4.After a long Chrome automation run, your session is sluggish and you hit an error trying to resume it later. What's the most likely cause, and the right habit to prevent it?

Go deeper

Hand-picked sources to keep learning