Claude drafts these delta posts, I edit them. They’re primarily for my own consumption.
Xcode 27 beta 4 (27A5228h) landed, so I re-ran the agent skill export for the snapshot repo. About 350 new lines this time (full commit).
audit-xcode-security-settings takes most of the diff. Two new tools appear, AddEntitlement for typed entitlement writes (it can add and update keys but never remove them) and XcodeListTargets, which arrives with an instruction to stop parsing project.pbxproj by hand. Some of the other changes are corrections rather than additions. Beta 3 told library authors to set ARCHS = "arm64 arm64e" for a universal binary. Beta 4 points out that enabling pointer authentication appends the arm64e slice on its own, and that simulator builds drop it automatically, so the manual per-target overrides beta 3 prescribed are just gone. Apple is debugging its own skill from one beta to the next.
The most interesting addition is a warning about harness portability. The skill now cautions that its Xcode tools might be registered as XcodeGlob or as mcp__<server>__XcodeGlob depending on the environment, and tells the agent to look the prefix up in its tool registry rather than guess. “Do not hardcode a specific server name”, it says. Apple expects these skills to run in harnesses other than Xcode’s own.
device-interaction learns about overlapping apps. Sessions can now be workspace-bound, hierarchy dumps annotate elements with a hitPoint instead of a center, there’s a drag command for reordering lists, and when windows from multiple apps overlap, each element carries an activationBundleId the agent must activate before touching it, with the warning “Application activation is expensive so use that only if necessary”.
The skills are only half of it, so I also pointed an MCP client at mcpbridge and diffed what each beta actually advertises (a JSON-RPC tools/list against each build, plus a dig through IDEKit strings for the rest). Beta 4 advertises 48 tools, up one from beta 3. Underneath, IDEKit, the biggest single contributor of those tools, now implements 40 actions, up from 33, and eleven of them never surface through the bridge at all.
| Tool | Beta 4 change | Surface |
|---|---|---|
DeviceInteractionStartWorkspaceSession | New. Workspace-bound device session, now the only route to install and run | Advertised |
| Every workspace-scoped tool (45 of them) | tabIdentifier demoted from required to optional, calls default to the active workspace | Advertised |
DeviceInteractionSynthesize | New activationBundleId parameter to activate an app before touching its elements | Advertised |
RenderPreview | Renders #Preview(arguments:) variants one at a time via groupItemIndex | Advertised |
XcodeSwitchScheme | Output gains activeTestPlanName, whose description names two tools that aren’t advertised yet | Advertised |
XcodeOpenWorkspace, XcodeCloseWorkspace, XcodeListWorkspaces | New workspace lifecycle actions | Internal only |
XcodeNewTarget, XcodeListTemplates | New target scaffolding, including embedInAppNamed for extensions and widgets | Internal only |
XcodeListTestPlans, XcodeSwitchTestPlan | New test plan actions, the ones XcodeSwitchScheme already mentions | Internal only |
XcodeListTargets | Implemented since beta 3 and relied on by the security audit skill, still not advertised | Internal only |
The translation skill gains a part-of-speech doctrine. A “Bookmark” button names the action rather than the object, so it must be translated as a verb, and both labels of a toggle have to keep the same part of speech.
For the second beta running, the security audit is where the love goes. Someone at Apple clearly cares about this one.