Muse CLI Chat (unofficial)Inception: A Muse Inside MuseVS Code / Cursor sidebar chat that drives Meta’s Muse Code CLI ( Not affiliated with Meta. Muse Code, Muse Spark, and related marks belong to Meta. Install and authenticate Muse separately: Muse Code docs. Privacy and security: PRIVACY.md · SECURITY.md Requirements
The sidebar treats Muse as ready only when the CLI is present and credentials are visible ( Install (published)After this extension is on a marketplace:
Or install a local
Develop
Open this folder in VS Code/Cursor and press F5 (Run Muse CLI Chat Extension). That runs
Commands
Settings (
|
| Setting | Default | Notes |
|---|---|---|
executablePath |
muse |
"muse" on PATH, or absolute path to the binary (application-scoped) |
model |
empty | Optional --model |
reasoningEffort |
empty | Optional --reasoning-effort |
trustWorkspace |
true |
Loads project skills/rules |
disableApproval |
false |
First send prompts to enable for headless (application-scoped) |
yolo |
false |
Disables approval and sandbox (dangerous, application-scoped) |
useEchoProvider |
false |
Offline UI smoke tests |
extraArgs |
[] |
Extra argv; --yolo / --disable-sandbox blocked (application-scoped) |
toolOutputFormat |
readable |
Default tool result view: readable (terminal-style for exec) or json (raw payload). Each card can toggle. |
toolDisplay |
compact |
Initial tool-card disclosure: compact folds all results, balanced opens only short results, and detailed opens all results. |
chatFormat |
markdown |
Assistant messages in the sidebar: markdown (sanitized) or plain text. |
preferredLocation |
secondarySidebar |
Where Open Chat opens the native UI: secondarySidebar, panel, or terminal. |
useTerminal |
false |
Open Chat launches the full Muse interactive terminal instead of the native UI. |
executionMode |
headless |
headless keeps native chat on muse exec --json; interactive opens the integrated Muse terminal so approvals and interactive input are available. MSP is reserved for a future host-backed mode. |
History
The sidebar keeps Muse’s --session-id in workspace state. History / the session id chip opens a picker of retained sessions for the current folder (from Muse’s local session index). Choosing one resumes that id for later muse exec calls and hydrates the transcript from the session log (with muse export as fallback). A small local cache paints instantly while hydration runs. Clean up sessions (also in that picker) permanently deletes selected sessions for this folder from Muse’s local index and removes their log directories under ~/.local/share/muse/sessions (close interactive Muse if the delete fails due to a DB lock).
Tool calls appear as one-line disclosure rows by default. Open a row to reveal
Readable / Raw output, file chips, and Open in canvas. The toolDisplay
setting chooses Compact, Balanced, or Detailed initial disclosure; failed calls
remain folded with a red exit badge until opened. The canvas shows the full tool
output beside the editor and adds Preview when stdout looks like a document.
Type @ in the composer to mention a file (open editors, git changes, then workspace search). After a turn, files that changed in the git working tree appear as a Changed files card and open in canvas as a diff. That is a review of writes Muse already made, not an accept/reject patch flow.
The chat is mode-aware. Headless is the default native-chat path and cannot answer interactive approval prompts. Interactive uses the integrated Muse terminal for workflows that need approvals or other interactive input. muse.useTerminal remains a compatible alias for opening the interactive path. MSP is planned as a future execution backend, not a 2.0 setting.
Paths to .md, .html, .json/.jsonl, .yml/.yaml, .toon, .csv/.tsv, and .txt appear as file chips. Chips are verified on the extension host, so only paths that exist on disk get one. Clicking a chip or a path in chat opens it in the main editor area: the canvas (Preview / Source) for files it can render from the workspace or Muse's data directory (512 KB cap), and a regular editor tab for everything else, including images and files outside those roots. Web URLs open in the browser, as do .xls(x), .pdf, and Office documents, which have no in-app renderer. Open externally in the canvas still hands the current file to the OS, so an HTML report goes to the system browser.
Safety
Headless muse exec cannot answer interactive approval prompts. disableApproval defaults off; on first send the extension asks before enabling --disable-approval (sandbox stays on). For staged shell approvals, use Muse CLI Chat: Open Interactive Terminal (launches Muse as the terminal process, not via a shell string).
Dangerous settings (executablePath, extraArgs, yolo, disableApproval) are application-scoped so a workspace cannot override them. Untrusted workspaces are not supported.
Never enable muse.yolo on a machine with real credentials unless you fully trust the workspace. Enabling it shows a one-time warning.
Tests
bun test
bun run check
CI runs the same checks plus vsce package on every push/PR to main (see .github/workflows/ci.yml).
Publish
- Create publisher
codemarcon VS Code Marketplace and/or Open VSX (changepublisherinpackage.jsonif you use another id). bun installthenbun run package(producesmuse-cli-chat-<version>.vsix).- Open VSX (good for Cursor):
npx ovsx publish muse-cli-chat-<version>.vsix -p <token> - VS Code Marketplace:
bunx vsce publish --no-dependencies(aftervsce login)
Production compile minify: NODE_ENV=production bun run compile.