// ai client LIVE

Cursor

Cursor code editor, connected with every command logged

Cursor is the AI built into my code editor. It connects to the same Fulltrace server as Claude Code and Codex, so it gets the same notes about me, and the full set of tools. One hook logs every slash command it runs back to that server, so Studio shows what my assistants have been asked to do in one place. Another stops shell commands that would send data off this machine.

14 mcp tools 02 hooks 17 shared skills 3000 server port

Same Server, Same Tools

There is no separate server for Cursor. It registers the same shared agentOS-portfolio server in ~/.cursor/mcp.json and gets all fourteen tools, like Claude Code. Its config carries the second token that allows changes, which Codex does not have. The portfolio reads matter most here: Cursor gets the same context about who I am, what I am working on and how I like things done that Claude Code loads from CLAUDE.md.

The full tool table is on the Codex page. All fourteen work from Cursor.

Cursor is not offered as a builder for development slices. Nobody has verified a way to drive it without a person at the keyboard, so Studio's launch picker shows it greyed out, with that reason beside it.

Three-Step Setup

Studio's setup wizard can walk through this. By hand it is three steps: check the server is running, run the Cursor sync script, then turn the server on inside Cursor. Nothing needs setting up before you start.

setup_stepsthe three manual steps
Before you start
Nothing to set first

The sync script locates the repo from its own path, so there is no environment variable to configure before running it. It expands an {{AGENTOSROOT}} token into everything it deploys, which is what let the whole repo move from C: to D: without a single hardcoded path following it.

01
Check the server is running

Run pm2 status and confirm agentOS-portfolio shows as online. If it is not running, start it from mcp-server/ with pm2 start ecosystem.config.cjs, which pins its port and settings.

02
Run sync.ps1 push-runtime

& "<repo>\clients\cursor\sync.ps1" push-runtime

This deploys mcp-config.json to ~/.cursor/mcp.json, copies hooks.json, and deploys shared skills to ~/.cursor/skills/.

03
Turn it on in Cursor and reload

Open Cursor, go to Settings → MCP (or run Cursor: Open MCP Settings from the command palette). The agentOS-portfolio server should appear. Enable it if shown as disabled, then reload the Cursor window so hooks and MCP config take effect.

Two Hooks

Cursor runs two hooks. The first posts every slash command I run to the Fulltrace server, tagged tool: "Cursor", and it shows up in Studio under Config > Commands, in the same log as Claude Code. The second checks each shell command before it runs and refuses any that would send data off this machine. It uses the same rule as Claude Code, kept in one shared file so the two cannot drift apart.

# clients/cursor/hooks.json (deployed to ~/.cursor/hooks.json)
{
"beforeSubmitPrompt": "node mcp-server/log-command-cursor.js"
# posts { tool: "Cursor", command: "/jn-*", ... } to /command-log
"beforeShellExecution": "node mcp-server/shell-egress-hook-cursor.cjs"
# refuses shell commands that would send data off this machine
}
The log is optional. If the Fulltrace server is offline, the post fails without an error and the command still runs in Cursor as normal. The shell check can only refuse a command. It never approves one, so Cursor's own approval prompts still apply.

Shared jn-* Skills in Cursor

The sync script copies all 17 shared commands from clients/shared/skills/ to ~/.cursor/skills/. On the way it fills in each command's {{TOKEN}} placeholders (the repo path, the client name, the lightweight model id), so one copy of each command works in every assistant and on every machine. They run as /jn-* slash commands in Cursor, and each run is logged to Studio by the hook above.

The full list is on the Claude page. All 17 are the same in Claude Code, Codex and Cursor.

sync.ps1 Commands

One script keeps Cursor in step with the repo. It pushes the config and commands out, pulls them back to inspect, or checks whether the two have drifted apart.

sync_commandspush · pull · check-sync
Command What it does
push-runtime Deploys mcp-config.json to ~/.cursor/mcp.json, hooks.json, and shared skills.
pull-runtime Copies ~/.cursor/mcp.json back into the repo for inspection or comparison. Useful for auditing drift.
check-sync Reports whether the repo copy and ~/.cursor/ are in sync. Exits non-zero when drift is detected.