Claude Code notifications in VS Code
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
claudein 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.jsonran in the panel, with nothing else to set up. SessionStartfired when a session started,UserPromptSubmitwhen we sent a message andStopwhen Claude finished its turn.- When Claude asked to run a command,
PermissionRequestfired, then aNotificationwith thepermission_promptmatcher. 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.