mobster xcode hook adds a post-action to your Xcode scheme. After each simulator build, from Xcode or xcodebuild, Mobster runs the checks of the app you built on that build, in the background. The verdict comes as a macOS notification. Xcode never waits for it.
Turn it on
From the folder with your.xcodeproj or .xcworkspace:
- The scheme has to be shared (Product › Scheme › Manage Schemes › Shared), so its file is in
xcshareddata. - Mobster writes the scheme the way Xcode does, so your diff is the post-action’s 19 lines.
mobster xcode unhooktakes them out, and the file is as it was. --tag smokeruns only the checks taggedsmoke.--sim "iPhone 17 Pro"runs them on that simulator instead of each check’s own.
What runs
After the build, Xcode runsmobster-agent xcode after-build --background:
- It reads the build from Xcode’s settings (
BUILT_PRODUCTS_DIR,FULL_PRODUCT_NAME,PLATFORM_NAME). A build for a device is skipped. - It picks the checks whose app is the one you built, by bundle ID, and points them at that build.
- It returns at once, and the checks run in the background. A newer build stops the run an older build started.
- The verdict comes as a notification, such as “3 passed”. The log is in
.mobster/xcode/last.log, the verdict in.mobster/xcode/last.json, and the full report in.mobster/test-results/.
Use Mobster from Xcode’s agents
Xcode’s Claude Agent and Codex read their own MCP servers from~/Library/Developer/Xcode/CodingAssistant, not from ~/.claude.json or ~/.codex. Those files only apply to agents you start in Xcode. One command writes Mobster into them:
- It keeps every other server and setting in both files, copies the old file to
<file>.mobster-backup, and changes nothing when you run it again.--removetakes only Mobster out. - Add
--with-skillto put the Mobster skill in the Claude Agent’sskillsfolder. - Xcode’s Gemini folder is not written: its file format isn’t documented.
- The real iPhone path stays on your Mobster plan, as everywhere else.
Use Xcode’s tools and Mobster together
Agents outside Xcode, such as Claude Code and Codex, reach Xcode throughxcrun mcpbridge. One command adds it beside Mobster:
claude mcp add --scope user --transport stdio xcode -- xcrun mcpbridge and codex mcp add xcode -- xcrun mcpbridge, the commands Apple documents. It needs Xcode 26.3 or later, and it leaves an existing xcode entry alone when that entry runs something else. Then:
- In Xcode, choose Xcode › Settings › Intelligence and turn on “Allow external agents to use Xcode tools” under Model Context Protocol. Mobster never changes this setting.
- Open your project in Xcode.
xcrun mcpbridgeconnects to the running Xcode and exits withno running Xcode processes foundwhen there is none. - Ask the agent: “Build the app, then check on a simulator that the paywall shows three plans.” The agent builds with Xcode’s tools, passes the
.appto Mobster’sverify_start, drives the simulator and answers with the verdict and its frames.
What was run
On 15 Oct 2026, on Xcode 26.4 with the iOS 26.4 simulator, with no Xcode window open:xcodebuildbuiltexamples/ios/Daybreakfor the simulator (** BUILD SUCCEEDED **) andmobster verify --app … --keyless --text Daybreakran it on one simulator: verdictpassed, 1 of 1 expectations held, 29.9 s including the simulator boot (25.3 s) and 0.8 s for the assertions.xcrun mcpbridgewith no Xcode running printedMCP_XCODE_PID environment variable not set and no running Xcode processes found.
mcpbridge, and an agent started inside Xcode. Both need Xcode open and you signed in to Apple ID in Xcode. Xcode 27’s agent plug-ins (a Mobster plug-in with a skill and MCP server) are not shipped: Xcode 27 isn’t installed here, and whether plug-ins accept stdio servers isn’t confirmed.