Skip to content

[Bug]: Can't override xcresult bundle path e.g. for code coverage #284

@KaiOelfke

Description

@KaiOelfke

Bug Description

I'm trying to understand how to use the new code coverage support. But me and Codex 5.3 struggled quite a bit.

  1. How to use --extra-args from CLI took time to figure out (syntax)
  2. -resultBundlePath argument can't be used to override xcresult path to something the agent then can use for the new coverage tools. This is due to XcodeBuildMCP always adding it internally and then the arg will be passed twice to xcodebuild, which then complains about that.
  3. If xcodebuildmcp passes it's own tmp dir to -resultBundlePath this should be accessible and usable for the code coverage tool, but how do I get the path? And wouldn't it be nice, if I could choose not to pass a path and xcodebuildmcp would use the latest tmp result bundle path?

My agent decided for now to run xcodebuild directly and then only using xcodebuildmcp for the coverage tool.

Either my agent and me don't know how to do things correctly or there's unnecessary friction in the test -> get coverage workflow.

xcodebuildmcp simulator test --extra-args='-enableCodeCoverage' --extra-args='YES' --extra-args='-resultBundlePath' --extra-args='Derived/Coverage/Coverage-2026-03-18-15:46.xcresult'
❌ [stderr] 2026-03-18 15:53:29.508 xcodebuild[63698:12509554] Writing error result bundle to /var/folders/8z/bv_18jn513gfc4bjl0165ts00000gn/T/ResultBundle_2026-18-03_15-53-0029.xcresult
❌ [stderr] xcodebuild: error: option '-resultBundlePath' may only be provided once

Debug Output

XcodeBuildMCP Doctor

Generated: 2026-03-18T08:10:26.248Z
Server Version: 2.3.0
Output Mode: Redacted (default)

## System Information
- platform: darwin
- release: 24.6.0
- arch: arm64
- cpus: 14 x Apple M4 Pro
- memory: 48 GB
- hostname: <redacted>
- username: <redacted>
- homedir: /Users/<redacted>
- tmpdir: /var/folders/8z/bv_18jn513gfc4bjl0165ts00000gn/T

## Node.js Information
- version: v25.7.0
- execPath: /Users/<redacted>/.local/share/mise/installs/node/25.7.0/bin/node
- pid: 68293
- ppid: 68236
- platform: darwin
- arch: arm64
- cwd: /Users/<redacted>/Developer/<redacted>
- argv: /Users/<redacted>/.local/share/mise/installs/node/25.7.0/bin/node /Users/<redacted>/.npm/_npx/99336612077b7094/node_modules/.bin/xcodebuildmcp-doctor

## Process Tree
- Running under Xcode: ❌ No
- 68293 (ppid 68236): node — node /Users/<redacted>/.npm/_npx/99336612077b7094/node_modules/.bin/xcodebuildmcp-doctor
- 68236 (ppid 92761): npm — exec xcodebu npm exec xcodebuildmcp-doctor
- 92761 (ppid 92736): -/bin/zsh — -/bin/zsh
- 92736 (ppid 92562): /usr/bin/login — /usr/bin/login -flp <redacted> /bin/bash --noprofile --norc -c exec -l /bin/zsh
- 92562 (ppid 1): /Applications/Gh — /Applications/Ghostty.app/Contents/MacOS/ghostty
- 1 (ppid 0): /sbin/launchd — /sbin/launchd

## Xcode Information
- version: Xcode 26.3 - Build version 17C529
- path: /Applications/Xcode-26.3.0.app/Contents/Developer
- selectedXcode: /Applications/Xcode-26.3.0.app/Contents/Developer/usr/bin/xcodebuild
- xcrunVersion: xcrun version 72.

## Dependencies
- axe: ✅ v1.5.2
- mise: ✅ 2026.2.19 macos-arm64 (2026-02-22)

## Environment Variables
- INCREMENTAL_BUILDS_ENABLED: (not set)
- DEVELOPER_DIR: (not set)
- HOME: /Users/<redacted>
- USER: <redacted>
- TMPDIR: /var/folders/8z/bv_18jn513gfc4bjl0165ts00000gn/T/
- NODE_ENV: (not set)
- SENTRY_DISABLED: (not set)
- AXE_PATH: (not set)
- XBMCP_LAUNCH_JSON_WAIT_MS: (not set)
- XCODEBUILDMCP_DEBUGGER_BACKEND: (not set)
- XCODEBUILDMCP_UI_DEBUGGER_GUARD_MODE: (not set)
- XCODEBUILDMCP_RUNTIME: cli
- XCODEBUILDMCP_SILENCE_LOGS: true

### PATH

/Users//.npm/_npx/99336612077b7094/node_modules/.bin
/Users//Developer//node_modules/.bin
/Users//Developer/node_modules/.bin
/Users//node_modules/.bin
/Users//.bin
/node_modules/.bin
/Users//.local/share/mise/installs/npm/11.11.0/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin
/Users//.bun/bin
/Users//.local/share/mise/installs/tuist/4.150.0/bin
/Users//.local/share/mise/installs/npm/11.11.0/bin
/Users//.local/share/mise/installs/node/25.7.0/bin
/Users//.local/share/mise/installs/ruby/3.4.7/bin
/Users//.local/share/mise/installs/github-tuist-argus/0.4.3
/Users//.local/share/mise/installs/python/3.14.2/bin
/Users//.local/bin
/Applications/Sublime Text.app/Contents/SharedSupport/bin
/opt/homebrew/bin
/opt/homebrew/sbin
/usr/local/bin
/System/Cryptexes/App/usr/bin
/usr/bin
/bin
/usr/sbin
/sbin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
/Library/Apple/usr/bin
/Applications/Ghostty.app/Contents/MacOS


## Feature Status

### UI Automation (axe)
- Available: ✅ Yes
- UI Automation Supported: ✅ Yes
- Simulator Video Capture Supported (AXe >= 1.1.0): ✅ Yes
- UI-Debugger Guard Mode: error

### Incremental Builds
- Enabled: ❌ No
- xcodemake Binary Available: ❌ No
- Makefile exists (cwd): (not checked: incremental builds disabled)

### Mise Integration
- Running under mise: ❌ No
- Mise available: ✅ Yes

### Debugger Backend (DAP)
- lldb-dap available: ✅ Yes
- Selected backend: dap

### Manifest Tool Inventory
- Total Unique Tools: 82
- Workflow Count: 16
- coverage: 2 tools
- debugging: 8 tools
- device: 17 tools
- doctor: 1 tools
- logging: 4 tools
- macos: 13 tools
- project-discovery: 5 tools
- project-scaffolding: 2 tools
- session-management: 5 tools
- simulator-management: 8 tools
- simulator: 23 tools
- swift-package: 8 tools
- ui-automation: 11 tools
- utilities: 1 tools
- workflow-discovery: 1 tools
- xcode-ide: 5 tools

### Runtime Tool Registration
- Enabled Workflows: 0
- Registered Tools: 0
- Note: Runtime registry unavailable.

### Xcode IDE Bridge (mcpbridge)
- Workflow enabled: ❌ No
- mcpbridge path: /Applications/Xcode-26.3.0.app/Contents/Developer/usr/bin/mcpbridge
- Xcode running: true
- Connected: ❌ No
- Bridge PID: (none)
- Proxied tools: 0
- Last error: (none)
- Note: Bridge debug tools (status/sync/disconnect) are only registered when debug: true

## Tool Availability Summary
- Build Tools: ✅ Available
- UI Automation Tools: ✅ Available
- Incremental Build Support: ❌ Not available

## Sentry
- Sentry enabled: ✅ Yes

## Troubleshooting Tips
- If UI automation tools are not available, install axe: `brew tap cameroncooke/axe && brew install axe`
- If incremental build support is not available, install xcodemake (https://github.com/cameroncooke/xcodemake) and ensure it is executable and available in your PATH
- To enable xcodemake, set environment variable: `export INCREMENTAL_BUILDS_ENABLED=1`
- For mise integration, follow instructions in the README.md file

Editor/Client

Codex macOS app

MCP Server Version

2.3.0

LLM

Codex 5.3 Extra High

MCP Configuration

Steps to Reproduce

Asked several prompts about code coverage, extra-args and how to override xcresult bundle

Expected Behavior

I can test and get coverage only via xcodebuildmcp

Actual Behavior

I need to invoke xcodebuild to avoid result bundle path issues.

Error Messages

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions