2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 09:22:20 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00
2026-08-11 12:38:02 -03:00

Claude for Nova

Claude Code inside Nova: a sidebar for the session, a live transcript in an editor tab, and every tool call routed through an approval you can review before it touches your files.

The extension drives the claude executable already installed on your machine, speaking its streaming JSON protocol over stdio. Your existing sign-in, settings, CLAUDE.md, skills, plugins, and MCP servers all apply — this is the same agent you get in a terminal, wearing Nova's interface.

Requirements

  • Nova 10 or later (built against Nova 14; not exercised on older versions)
  • Claude Code installed and on disk (~/.local/bin/claude, Homebrew, or a path you set in settings)

Getting started

  1. Open the Claude sidebar (the starburst in the sidebar rail).
  2. If the Account row says Not signed in, click it and choose how to sign in.
  3. Press ⌘⇧L, or use the ✳︎ button in the sidebar header, and ask for something.

The first prompt starts a session in your project directory. The transcript opens as a tab and updates as Claude works.

Signing in

Authentication is handled by Claude Code itself — the extension never sees your credentials. Sign In offers three routes:

Route What happens
Claude Subscription Runs claude auth login, opens the authorization page in your browser, and relays the code back
Anthropic Console The same flow with --console, for API-billed accounts
Open a Terminal Runs claude auth login in a terminal window — use this for SSO or if the in-app flow stalls

You can also store an API key with Set API Key…. It goes in the macOS keychain and is passed to Claude Code as ANTHROPIC_API_KEY, taking precedence over a signed-in account. Clear Stored API Key removes it.

Approving tool use

In the default Manual permission mode, Claude asks before each tool that needs permission. Every request appears in Needs Approval in the sidebar and as a panel, so dismissing the panel never strands the session — the request waits until you answer it from the sidebar's context menu.

Reviewing a file change

When Claude wants to edit or create a file, the file as it would be after the change opens in a tab. Review it there, and settle it with ordinary editor gestures:

Gesture Result
⌘S save Apply the change
⌘W close Reject it

The tab is editable, and that is the point: fix the variable name Claude got wrong, delete the half you don't want, then save — your version is what gets written, not Claude's. A notification carries the same choices, and they appear as rows under the request in the sidebar; Show Diff gives the unified diff if you'd rather see just what moved.

Prefer the old quick yes/no? Set Reviewing file changes to Ask in a panel.

Allow for Session adds an allow rule for that tool for the rest of the session, so Claude stops asking about it.

Two tools are their own interaction surface rather than a yes/no gate, and get purpose-built handling — see Plan mode and Questions below.

Plan mode

Plan with Claude… (⌘⇧P) switches the session into plan mode and prompts you. Claude researches and proposes but changes nothing. When it has a plan, the plan opens in a tab and you choose:

Choice What happens
Approve — auto-accept edits Plan accepted; the session moves to Accept Edits so Claude can work uninterrupted
Approve — ask before each edit Plan accepted; you keep approving each change
Keep Planning… Send it back for revision; Claude revises and re-presents
Show Plan Again Re-open the plan

When a plan is ready you get a notification, not a modal sheet — the plan tab stays scrollable and editable while you decide. The same choices also appear as rows under the request in Needs Approval, so you can dismiss the notification and take your time.

Giving feedback on a plan

The plan is an ordinary editable document, and there are three ways to respond — they combine freely:

  • Edit the plan in its tab. Rewrite, delete, or add steps directly. When you approve, your version is sent back and becomes the plan of record — Claude works from what you wrote, not its own draft. Unsaved edits count.
  • Highlight a passage, then choose Keep Planning…. The selected lines are quoted back to Claude along with your note, so "this part is wrong" has an unambiguous referent.
  • Write Feedback… opens a scratch tab you can type into freely — as many paragraphs, lists, and code snippets as you want. When you're done, choose Send Feedback in the sidebar. Nova gives extensions no multi-line field of their own, so the editor itself is the text box.

If you edit the plan and send feedback, your rewrite goes along with it, marked authoritative.

Nothing is lost by ignoring the notification: the plan waits in Needs Approval with its choices until you act. Plans are saved by Claude Code under ~/.claude/plans/, so you can reopen one later.

You can also stay in plan mode for a whole session by setting the permission mode to Plan.

Questions

When Claude needs a decision from you it asks a real question, and the options appear in a Nova choice palette. Pick one — or Other… to type your own answer. Multi-select questions let you toggle several options and then choose Done. Your answer goes straight back to Claude as the tool's result.

Permission modes

Change the mode any time from the Permissions row:

Mode Behaviour
Manual Ask before each tool (default)
Accept Edits File edits apply automatically; other tools still ask
Plan Research only — Claude proposes, changes nothing
Auto Claude decides what is worth asking about
Bypass Approve everything. Only in a directory you trust

The sidebar

  • Session — status, account, model, permission mode, and running cost. Double-click Model or Permissions to change them mid-session.
  • Needs Approval — anything waiting on you, with its choices as rows underneath: Allow / Allow for Session / Review / Deny for an ordinary tool, or the approve-and-feedback options for a plan. Double-click a row to take it.
  • Activity — every tool call, newest first. Double-click one that touched a file to open it.
  • Changed Files — files Claude actually modified. Double-click to open, or use Show Change… to see the last edit as a diff.

Commands

Command Shortcut
Ask Claude… ⌘⇧L
Plan with Claude… ⌘⇧P
Ask Claude About Selection… (Editor menu) ⌃⌘L
Add File to Claude's Context (Editor menu)
Add Files to Context…
Show Transcript
New Session / Resume Session…
Stop Claude / End Session
Set Model… / Set Permission Mode…

Add Files to Context… opens a file chooser — pick any files or folders in the project and ask about them together, without opening them first.

Ask Claude About Selection… sends the file, the line range, and the selected text with your question. Plain Ask Claude does the same automatically when there is a selection — turn that off with the Include the editor selection setting.

Resume Session… lists this project's recent Claude Code sessions, labelled with their opening prompt, including ones started in a terminal.

Settings

Model, effort, permission mode, and the claude executable path are set in Extension Settings; Model and Permission Mode can also be overridden per project in Project Settings. Other options:

  • Reviewing file changes — an editable proposal tab, or a panel
  • Open the transcript automatically when a session starts
  • Stream text as it is generated — token-by-token output
  • Show thinking in the transcript
  • Include the editor selection with prompts
  • Additional CLI arguments — appended to the claude command line

How it works

Nova extension ──stdio (stream-json)──> claude --print
     │                                       │
     │  <── assistant / tool / result ───────┤
     ├──── control_response (allow/deny) ────┤
     └──── control_request (interrupt) ─────>┘

One claude process per window, launched with --input-format stream-json --output-format stream-json. Session messages and control traffic share the pipe: the CLI raises a can_use_tool control request for each permission prompt, and the extension answers it with your decision. Questions are answered by returning the choices as updatedInput; approving a plan returns a setMode permission update, which is what moves the session out of plan mode. Interrupts and mid-session model or permission changes travel the same channel.

There is no bundled copy of Claude Code, no Node sidecar, and no network access of its own — the extension only talks to the executable you already trust.

Known limits

  • Nova has no scriptable diff viewer, so proposed changes are shown as a unified diff in a scratch tab rather than in a side-by-side editor.
  • Extension sidebars can only contain tree rows — there is no API for a multi-line field like the one in Nova's own Source Control sidebar. Feedback is written in a scratch tab instead, and decisions are tree rows.
  • Ordinary tool approvals still use a panel, since they are a quick yes/no.
  • Questions and plan approvals are handled natively. Any other tool that needs its own interactive prompt is declined with an explanation — run those from a terminal.
  • The transcript is a Markdown document, so it renders text, not widgets.
  • Sessions run in the workspace directory. Open a folder in Nova before asking.

Development

nova extension validate .   # check the bundle
nova extension activate .   # load it into Nova for development

Extension logs (with nova.inDevMode() output) appear in Nova's Extension Console. Keyboard shortcuts can be rebound in Preferences → Key Bindings if any of the defaults collide with yours.

S
Description
No description provided
Readme
128 KiB
Languages
JavaScript 100%