AC Bridge

Claude Code notifications in VS Code

Last updated · Run in VS Code on

The short answer In VS Code, Claude Code runs your hooks in both places you can use it: the extension's chat panel and claude in the integrated terminal. A Stop hook fires when Claude finishes, and a Notification hook with the permission_prompt matcher fires when it needs your permission. Only the terminal runs Claude Code's status line. We ran both places on one Linux setup, and the page says what that run did not cover.

Or let a light show it

A dot on a tab only helps while you are looking at VS Code. A light works from across the room, and adds no extra ping.

What it does

AC Bridge turns the smart lights and plugs you already own (Hue, LIFX, Govee, WiZ, Home Assistant and more) into a status light for Claude Code and the Codex CLI. It runs on Windows, macOS and Linux. Its Claude Code hooks come with its plugin, so there is nothing to paste into your settings files. In the example colours from our homepage, the lamp flashes red when the agent needs permission and turns green when it has finished; you pick the colours.

What it follows in VS Code

AC Bridge's Claude Code hooks ran in both the VS Code extension panel and claude in VS Code's integrated terminal, with nothing added to settings files.

In both places your lights can show when a session starts, when Claude is working, when it finishes a turn and when the session ends. In both places your lights can show when Claude needs your permission to run a tool.

Your lights also react when Claude asks you a question or has a plan ready for approval. Shortly after, they switch to the needs-permission state. When you close a Claude tab in the panel, or exit claude in the terminal, the session-ended state fires.

Panel or terminal

Usage and cost states need Claude Code's status line, which runs in the integrated terminal but not in the extension panel. For those states, run claude in the terminal.

If you answer No to a permission prompt or cancel a plan, the light stays on needs permission until you send your next message.

How we checked: on 6 November 2026, in VS Code for Linux, we logged every state the plugin sent, with a stand-in in place of the AC Bridge app, so no lamp was connected. The plugin came from our source tree rather than a released install. What the run left out is under what ran.

What it costs

One plan: a 7-day free trial with no card needed, then £2.99 a month if you add a card to keep going; without one the trial just ends and nothing is charged. Cancel any time from your account. There is no API key to buy.

What it collects

LAN devices are driven straight from your machine and their keys never leave it; your account, settings, device list, usage counts and session states sync through our servers. Your prompts, code and session transcripts are never collected. Privacy policy.

Try it on your own lights Start the 7-day free trial, or read the setup docs and the status light guide first.

What ran in VS Code, and what has not

The first card is what we ran and logged. The other is what we did not run, so treat those setups as unknown until you have tried them yourself.

Ran on 6 November 2026

  • VS Code 1.145.2 for Linux, on Ubuntu 24.04 in the Windows Subsystem for Linux, on a virtual display.
  • The Claude Code extension 2.1.318 in its chat panel, and Claude Code 2.1.319 as claude in the integrated terminal.
  • A hook on every event in the workspace's .claude/settings.json, logging which events fired.
  • A new session, a short task, a permission ask, a question, a plan, answering No, and closing the session.
  • The same Claude Code in a plain terminal outside VS Code, to compare.

Not run yet

  • VS Code on Windows or macOS.
  • A remote window: VS Code on one machine opening a Linux distribution, an SSH host or a container.
  • Editors built on VS Code.
  • The Claude desktop app.
  • Subagents, compaction, errors and rate limits.
  • Any sound, pop-up or tab dot: the run logged events, and nobody watched the screen.

Claude Code VS Code extension notifications

The panel marks a tab that needs you, and it runs the same hooks as the terminal. The dot comes from the extension docs; the hooks are from our run.

The dot on the spark icon

With Claude open in tabs, a small coloured dot on the spark icon shows each tab's status: blue while a permission request is pending, orange when Claude finished while the tab was hidden. The sessions list can also be filtered to Needs input, Working or Completed. Both are from the VS Code docs; we did not watch them.

Hooks run in the panel

  • A hook in the workspace's .claude/settings.json ran in the panel, with nothing else to set up.
  • SessionStart fired when a session started, UserPromptSubmit when we sent a message and Stop when Claude finished its turn.
  • When Claude asked to run a command, PermissionRequest fired, then a Notification with the permission_prompt matcher. Its message read: Claude needs your permission to use Bash.
  • Closing the session's tab fired SessionEnd.

Which command to run from those hooks, for a toast or a sound, is in the Claude Code notifications guide.

Claude Code notifications in the VS Code integrated terminal

Run claude in the terminal

The extension bundles its own copy of Claude Code for the panel. To run claude in the integrated terminal you also need the standalone install, as the VS Code docs say.

In our run the same hooks fired there as in the panel. The permission message was shorter: Claude needs your permission. A plan waiting for approval read: Claude Code needs your approval for the plan.

Only the terminal runs the status line

Claude Code's status line ran in the integrated terminal and never in the panel. Anything you build on the status line, such as a usage or cost readout, needs claude in the terminal.

Terminal look in the panel The extension's Use Terminal setting, under Extensions > Claude Code, swaps the chat panel for the terminal-style interface. Not run yet: we did not switch it on.

Claude Code VS Code notification sound

Not run yet: our run had no speaker, so no sound was heard. A sound needs a command that plays one, started from a Stop hook for finished and a Notification hook for permission, and both hooks fired in the panel and in the terminal. The Claude Code notifications guide has a Mac example. For claude in the terminal, the terminal bell setting is the one-line option; it is reported to have no effect in the panel.

Claude Code notifications not working in VS Code

What went quiet in our run, and what to check.

No idle notification

The idle_prompt notification never fired in our run: not in the panel, not in the terminal, and not in a plain terminal outside VS Code with the same Claude Code. To hear that Claude has finished, hook Stop instead.

Answering No fires nothing

Clicking No on a permission prompt in the panel, or turning down a plan with Esc in the panel or the terminal, fired no hook at all: no Stop and no other event. Whatever a hook last set stays as it was until you send your next message.

No permission prompt to report

In the panel's Auto mode a classifier reviews most actions instead of asking you, so there is no prompt for a hook to report. Our run used Manual, where Claude asks before file edits and most shell commands. The modes are in the VS Code docs.

An older Claude Code

Before Claude Code 2.1.233 the Notification hook did not fire for permission prompts in the extension. The Claude Code notifications guide lists the reports and what to do.