Apple updates vended agent skills: Xcode 27 Beta 4

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.

ToolBeta 4 changeSurface
DeviceInteractionStartWorkspaceSessionNew. Workspace-bound device session, now the only route to install and runAdvertised
Every workspace-scoped tool (45 of them)tabIdentifier demoted from required to optional, calls default to the active workspaceAdvertised
DeviceInteractionSynthesizeNew activationBundleId parameter to activate an app before touching its elementsAdvertised
RenderPreviewRenders #Preview(arguments:) variants one at a time via groupItemIndexAdvertised
XcodeSwitchSchemeOutput gains activeTestPlanName, whose description names two tools that aren’t advertised yetAdvertised
XcodeOpenWorkspace, XcodeCloseWorkspace, XcodeListWorkspacesNew workspace lifecycle actionsInternal only
XcodeNewTarget, XcodeListTemplatesNew target scaffolding, including embedInAppNamed for extensions and widgetsInternal only
XcodeListTestPlans, XcodeSwitchTestPlanNew test plan actions, the ones XcodeSwitchScheme already mentionsInternal only
XcodeListTargetsImplemented since beta 3 and relied on by the security audit skill, still not advertisedInternal 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.