Skip to content

Allow reusing Xcode.app's per-workspace DerivedData (avoid duplicate builds); static XCODEBUILDMCP_DERIVED_DATA_PATH can't map per workspace #525

Description

@davidpasztor

Version: 2.7.0

Problem

For derived data the MCP currently offers two modes, neither of which lets agent builds share Xcode.app's DerivedData per workspace:

  1. Default: per-workspace isolation (Isolate DerivedData per workspace to avoid conflicts with concurrent sessions #340), but under the MCP's own tree (~/Library/Developer/XcodeBuildMCP/workspaces/<workspace>/DerivedData). This is separate from Xcode.app's ~/Library/Developer/Xcode/DerivedData/<Workspace>-<hash>, so a project built both in the GUI and via the MCP is built and stored twice — double the disk and no incremental reuse across the two.
  2. XCODEBUILDMCP_DERIVED_DATA_PATH: a single static path applied to every call (resolveEffectiveDerivedDataPath returns it verbatim). With multiple workspaces/worktrees, they all collide in one folder → build-product clobbering and full rebuilds.

Request

A mode to resolve derived data to the existing Xcode.app DerivedData folder for each workspace (e.g. matching WorkspacePath in each folder's info.plist), and/or per-workspace configurability instead of a single static override.

This would let a repo built in both Xcode and the MCP share one DerivedData per workspace — no duplication, true incremental reuse between interactive and agent builds.

Workaround

I currently achieve this with a client-side PreToolUse hook that rewrites each build/test call's derivedDataPath to the matching GUI folder (looked up via WorkspacePath in each folder's info.plist), falling back to a deterministic per-workspace path when no GUI folder exists yet. Happy to share it if useful.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions