Reliable completion and error notifications for Codex workflows in VS Code.
A lightweight VS Code extension that notifies you when Codex responses finish or pauses for input using sound and configurable UI alerts that follow the same quiet-status vs banner setting.
Note
Built for fast feedback loops: use automatic Codex session completion detection or the manual .codex-notify file trigger.
- Completion and error notification commands.
- Bundled sound defaults (no custom setup required):
- Complete ->
notification2.wav - Error ->
notification1.wav
- Complete ->
- Auto completion detection from Codex stream logs with safer burst checks.
- Prompt detection when Codex pauses for
request_user_input. - Optional document-based idle detection fallback.
- Quiet mode or banner mode for completion and prompt notifications.
- Manual trigger support through
.codex-notifyandcodex-done.ps1. - Remote SSH workspace support: notifications and sounds run locally while relative trigger files are watched on the remote host.
| Command | Description |
|---|---|
Codex Notifier: Notify Complete |
Trigger completion notification manually |
Codex Notifier: Notify Error |
Trigger error notification manually |
Codex Notifier: Test Sound |
Test completion sound + UI behavior |
Codex Notifier: Toggle Auto Notify |
Enable/disable log-based auto detection |
Codex Notifier: Show Diagnostics |
Show runtime diagnostics snapshot |
Codex Notifier: Debug Snapshot |
Print active docs/editors to output channel |
- Open Extensions view in VS Code (
Ctrl+Shift+X). - Search
Codex Notifier. - Click Install on
zis3c.codex-notifier.
Direct link:
code --install-extension zis3c.codex-notifierSee INSTALLATION.md for VSIX steps.
- Open VS Code settings and search
Codex Notifier. - Keep defaults (recommended): sound on, auto-detection on, safer burst thresholds.
- Run
Codex Notifier: Test Soundfrom Command Palette. - Ask Codex something and wait for either response completion or
request_user_inputnotification.
- On activation, the extension starts the Codex session completion detector and the manual file watcher.
- For manual mode, it resolves
codexNotifier.watchFilePath(default:.codex-notify) from the current workspace folder or folders. - If no workspace folder is open, it falls back to the current process directory.
- If the workspace changes, the manual watcher refreshes so it follows the new folder.
- If the file does not exist, nothing is created automatically (manual trigger stays off until file exists).
- When the file content changes:
- Contains
error-> error notification - Any other non-empty content -> complete notification
- Contains
- Auto mode tails Codex session JSONL files and reacts to authoritative
task_completeandrequest_user_inputevents. - Prompt notifications use the same
codexNotifier.completionUseBannersetting as completion notifications.
Codex Notifier remains a single extension running in VS Code's local UI
extension host, so sounds and notifications are produced on your computer. In a
Remote SSH window it reads ~/.codex/sessions/**/*.jsonl through VS Code's
remote file-system API and reacts to authoritative task_complete and
request_user_input events.
Guardian and subagent sessions are ignored, because their intermediate
task_complete events do not mean the user's top-level task has finished.
request_user_input events mean Codex is waiting for the user to answer, so
they should notify immediately.
When a conversation is forked into a new task, inherited completion history is
also ignored. Resuming an existing chat does not replay its previous
completions; only newly completed work produces a notification.
The default relative trigger path (.codex-notify) is watched through VS Code's remote file-system API. In a multi-root workspace, one trigger is watched in each root. Absolute watchFilePath values still refer to the local UI machine; use a relative path to watch a file on the SSH host.
The remote home directory is inferred from the workspace URI. For unusual
layouts, set codexNotifier.remoteSessionsPath to the absolute remote sessions
directory.
{
"codexNotifier.enableSound": true,
"codexNotifier.enablePopup": true,
"codexNotifier.completionUseBanner": false,
"codexNotifier.monitorCodexLog": true,
"codexNotifier.codexLogPollMs": 400,
"codexNotifier.codexLogIdleMs": 500,
"codexNotifier.codexChatCooldownMs": 4500,
"codexNotifier.codexLogMinEvents": 1,
"codexNotifier.codexLogMinBurstMs": 0
}- Tutorial video: https://youtu.be/IpdNMO9YukI
- For sound customization and advanced settings, see INSTALLATION.md and the Recommended Settings section above.
- INSTALLATION.md
- CONTRIBUTING.md
- SECURITY.md
- AUTO_DEPLOY.md
- Local syntax and release checks:
node --check extension.jsnpm run checknpm run lintnpm testnpm run package:testnpm run ci
- Manual smoke test:
- install the VSIX
- run
Codex Notifier: Test Sound - verify the package loads and the commands work
- Manual remote live test:
- open a Remote SSH VS Code window
- verify notifications and sound on the local UI machine
- confirm the remote host session watcher still reacts correctly
- What automation does not cover yet:
- no full UI E2E test for the VS Code window
- no automated Remote SSH live test in GitHub Actions
- CI:
- GitHub Actions runs the same checks on every push and pull request across Windows, macOS, and Linux
npm run cimatches the main automated checks locally
codex-finish-notifier-vscode/
|- .eslintrc.cjs # ESLint config
|- .github/
| `- workflows/
| `- ci.yml # GitHub Actions CI
|- .gitignore # Git exclusions for local/dev artifacts
|- .vscodeignore # VSIX packaging exclusions
|- AUTO_DEPLOY.md # Release/deploy workflow documentation
|- CHANGELOG.md # Version history
|- CONTRIBUTING.md # Contribution workflow and coding notes
|- INSTALLATION.md # End-user and dev installation guide
|- LICENSE # MIT license
|- README.md # Main documentation and feature overview
|- package-lock.json # Locked npm dependency tree
|- package.json # VS Code extension manifest/config schema
|- extension.js # Core extension runtime (commands + watchers)
|- scripts/
| |- test-session-events.js # Unit-style session event checks
| |- test-vsix.js # VSIX smoke test
| `- validate-release.js # Release validation checks
|- session-events.js # Session parsing helpers
|- codex-done.ps1 # Helper trigger script for .codex-notify flow
|- notification1.wav # Bundled default sound (error)
|- notification2.wav # Bundled default sound (complete)
`- .vscode/
`- launch.json # Extension Development Host debug profile
Notes:
.vscode/settings.jsonis intentionally local-only and not tracked in git..codex-notifyis runtime trigger data and not tracked in git.codex-notifier-private.vsixis a generated install artifact, not a source file.
MIT. See LICENSE.
