Muse Code · 6 min read

Built-in skills for 3D pages and browser games that test their own output

Three new built-in skills build 3D pages and browser games and play them before handoff, while /game-3d-visuals gets faster. The week also brings local port rules for sandboxed commands, enforced deny rules in :ask-me profiles and a muse usage command.

Key takeaways 5
  • Three new built-in skills (web3d, browser-game, visual-coding) build 3D pages and browser games and check them with real input before handoff.
  • /game-3d-visuals finishes in about half the time and starts on its own only for polished 3D work.
  • Permission profiles can open chosen local ports to sandboxed commands with network.local_ports, and :ask-me profiles on macOS and Linux now enforce filesystem deny rules.
  • muse usage shows your subscription allowance without running a model turn, and agent plugins can ship MCP servers.
  • Session hosts gain session/leave and muse serve --preset, and the TypeScript and Python SDKs can answer the agent's questions.

A single request for a 3D page used to be able to start two competing build processes, and a deny rule in an :ask-me permission profile could be silently ignored. This week fixes both. The headline is a set of built-in skills for 3D pages and browser games that play what they build before handing it over. Alongside them come local port rules for sandboxed commands, filesystem deny rules that are now enforced, and a command to check your subscription allowance.

Week 43 (October 19-24, 2026) covers versions 1.4.11 to 1.4.13: 3 releases and 226 changelog entries. Most of the entries are small, so this post sticks to what changes how you work.


Skills that build 3D pages and games, then play them

Four skills share the work. web3d builds single-file 3D web pages and browser games and checks them in a browser before handoff. browser-game builds playable games from a brief. visual-coding is a router: for a 3D page, a browser game or Blender work, it points the agent to the one built-in skill that owns that kind of work before any code is written. /game-3d-visuals drives 3D models and games from reference images, a visual spec and a render-vs-reference acceptance loop.

Routing removes the double build. Before visual-coding (1.4.13), one request could run two competing build processes. Now a single skill takes it from the start. That is the practical gain here, and you do not have to pick the skill yourself.

web3d plans before it builds. It plans each part’s shape, surroundings and materials first. After the first working build, a fresh tester subagent plays the page and writes a critique. That critique must be closed before delivery, and review rounds have a time guard so the loop does not run indefinitely.

browser-game sizes the work to the request. It plays the game with real input before handoff. For a long design document it runs up to three rounds. In each round a fresh critic plays a copy of the game against a checklist and the brief’s rules, and the agent fixes what the round finds.

/game-3d-visuals got faster and quieter. It now finishes in about half the time, because it skips the separate visual-plan review and runs one render-vs-reference fix round by default. It also starts on its own only for polished 3D work:

  • a reference image,
  • Blender,
  • or an explicit high-fidelity ask.

Quick 3D pages and games are built directly instead of waiting on its multi-agent pipeline. If you want the full pipeline for a quick page, ask for high fidelity explicitly.

/blender is wider too. It now handles general 3D work: modeling, scene recreation from an image, animation and large environments. It can measure a render against its reference and check animations frame by frame for pops, sinking and objects leaving the shot.


Changes for everyday work

Local dev ports for sandboxed commands. Permission profiles can now open chosen local development ports with network.local_ports, set to allow, ask or deny per port. With ask, Linux prompts for each connection and macOS prompts once per session. A loopback entry in network.targets is now rejected, so move it to network.local_ports. One compatibility catch: an older Muse build cannot open a chat that saved local-port rules or a managed local-port limit. Update the app to open it. Other chats are unaffected. Details are in the permissions documentation.

Deny rules in :ask-me profiles now count. On macOS and Linux, profiles extending :ask-me enforce filesystem deny rules instead of silently ignoring them. Workspace-root deny globs such as **/*.pem and absolute or ~/ denies refuse matching reads and writes. They also block sandboxed shell access to matching paths that exist when each command starts. The profile keeps its write grants elsewhere. Two edge cases:

  • On Linux, files created mid-command under a deny glob are not covered. macOS enforces globs live through Seatbelt regex, with no snapshot window.
  • A deny on a path that does not exist yet is masked at its first missing component.

If you wrote deny rules for an :ask-me profile and assumed they worked, they now do (see the permissions documentation).

Check your allowance with muse usage. The command shows your subscription allowance (window and weekly use, reset times, tier) without running a model turn. muse exec --json reads the same data when the run saw no usage update. See the subscriptions documentation.

Plugins can ship MCP servers. Agent plugins can now supply MCP servers. Each server gets its own review, and you sign in with muse mcp login. The extending documentation covers the details.

Session hand-off, answers and presets. The session protocol gains session/leave. A client can hand one loaded session to another host while the first host and its other sessions keep running. The TypeScript and Python SDKs can answer the agent’s questions with Session.answerUserInput and Session.answer_user_input, including a question still open when a session is resumed. muse serve --preset lets you choose a run preset when starting a session host. More in the session messaging documentation.


Technical notes

Approvals and network prompts

  • Network approval prompts now default to ‘Yes, don’t ask again this session’ for that exact host and port, so pressing Enter stops repeat prompts (1.4.11).
  • After you allow a network request once, later requests from the same non-interactive command to that exact host, port and protocol no longer ask again (1.4.12).
  • Auto-review no longer hands you every request to localhost or 127.0.0.1 just because of its address. It reviews them like any other action (1.4.11).
  • When a sandboxed command fails writing outside the writable roots, the error now explains that the sandbox blocked it. It names the workspace_roots grant, a one-time unsandboxed run, and workspace-or-/tmp cache options (1.4.12).

Usage reporting

  • muse exec --json prints a run.usage line before each run ends, with token usage per model and your subscription allowance (1.4.11).
  • /usage totals now include background work, broken out in a separate Observers row (1.4.11).
  • Warnings near your usage limit show the remaining allowance and reset time above the message queue (1.4.13).

Models and clients

  • Desktop and other connected clients now offer the same third-party models as the terminal model picker (1.4.13).

SDKs and non-interactive runs

  • The TypeScript and Python SDKs accept an approval handler and an approval-failure observer when resuming a session, so an approval pending at resume reaches the handler (1.4.11).
  • --yolo now keeps the request_user_input question tool and enables async questions. Pass --disable-request-user-input for runs that should ask nothing (1.4.13).

Agent behavior

  • Tiny text, style or config changes, throwaway prototypes and quick-result requests no longer start by writing a failing test. Other fixes run the broad test suite once after the last edit and post a status line during long runs (1.4.12).

What to take away

If you work in the terminal:

  • Ask for a 3D page or small browser game and watch whether the agent plays it before handoff. For a quick page you do not need to name a skill.
  • Say ‘high fidelity’ or attach a reference image when you want the /game-3d-visuals loop.
  • Run muse usage to see where you stand against your allowance.
  • Check your --yolo scripts: the question tool now stays on, so add --disable-request-user-input to runs that must ask nothing.

If you run parallel sessions or build on the SDKs:

  • Try session/leave to hand a loaded session to another host.
  • Try muse serve --preset to start a host with a chosen run preset.
  • Wire Session.answerUserInput or Session.answer_user_input into your client, and pass an approval handler on resume so a pending approval does not get lost.

If you administer integrations or company deployments:

  • Review :ask-me profiles that carry filesystem deny rules. They are now enforced on macOS and Linux, so check that nothing you rely on is blocked.
  • Move any loopback entry from network.targets to network.local_ports, because it is now rejected.
  • Update older Muse builds before they meet a chat that saved local-port rules or a managed local-port limit.
  • If you distribute agent plugins, note that they can now ship MCP servers. Each server gets its own review, and users sign in with muse mcp login.

Sources: the Muse Code changelog, versions 1.4.11 to 1.4.13 (October 19-24, 2026), and the Muse Code documentation pages linked above. The built-in skills have no dedicated documentation page, so their behavior here comes from the changelog entries alone.

Patrick Zandl trains teams in Claude Code and agentic software development in Prague and writes about what actually works in real-world AI-assisted projects. Follow on LinkedIn

Read next

Get the next one by email

Every Tuesday: what changed in Claude Code, Codex and other coding agents, plus new articles. No spam.