You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The docs incorrectly stated the predicate depends on both
runningUnderXcode AND xcodeToolsActive. In reality it only checks
runningUnderXcode β Xcode's coding agent always provides native
equivalents, independent of the Xcode Tools bridge (which is for
external agents connecting to Xcode's MCP server).
- Xcode Tools bridge is active (proxied tools are available)
314
+
- `hideWhenXcodeAgentMode`: hides tool/workflow when running inside Xcode's coding agent.
315
+
Xcode provides native equivalents for these tools, so XcodeBuildMCP hides its versions
316
+
to avoid conflicts. This is independent of the Xcode Tools bridge (which is for external
317
+
agents connecting to Xcode's MCP server).
317
318
318
319
This predicate powers the policy described in `XCODE_IDE_TOOL_CONFLICTS.md`.
319
320
@@ -345,12 +346,9 @@ These tools:
345
346
- can trigger `tools/listChanged` updates
346
347
347
348
### How dynamic tools influence static tool visibility
348
-
When dynamic tools are active (`xcodeToolsActive`), conflict-tagged XcodeBuildMCP tools are hidden via `hideWhenXcodeAgentMode`.
349
+
When running inside Xcode's coding agent (`runningUnderXcode`), conflict-tagged XcodeBuildMCP tools are hidden via `hideWhenXcodeAgentMode` because Xcode provides native equivalents.
349
350
350
-
This behavior is:
351
-
- scoped to MCP runtime
352
-
- driven by bridge status
353
-
- re-applied whenever bridge status changes
351
+
This is distinct from the Xcode Tools bridge, which allows external agents (Cursor, Claude Code, etc.) to access Xcode capabilities via its MCP server.
354
352
355
353
---
356
354
@@ -437,8 +435,8 @@ At runtime the loader imports:
437
435
438
436
### Phase 4: migrate MCP registration to manifest-driven
- Wire in Xcode bridge status β `xcodeToolsActive` updates
441
-
- Apply conflict filtering via `hideWhenXcodeAgentMode`
438
+
- Wire in Xcode bridge status β `xcodeToolsActive` updates for bridge-dependent predicates
439
+
- Apply Xcode agent conflict filtering via `hideWhenXcodeAgentMode` (based on `runningUnderXcode`)
442
440
443
441
### Phase 5: migrate daemon to manifest-driven
444
442
- Daemon builds catalog from manifest
@@ -478,9 +476,7 @@ routing:
478
476
daemonAffinity: preferred
479
477
```
480
478
481
-
When:
482
-
- runningUnderXcode=true AND xcodeToolsActive=true
483
-
then `hideWhenXcodeAgentMode` fails and tool is not registered/listed in MCP (but remains in CLI outside Xcode).
479
+
When `runningUnderXcode=true`, `hideWhenXcodeAgentMode` fails and the tool is not registered/listed in MCP (but remains in CLI outside Xcode). This check is independent of `xcodeToolsActive` β Xcode's coding agent always provides native equivalents for these tools.
### 6.2 Re-apply static tool registration when bridge becomes active/inactive
783
-
When the bridge syncs tools / disconnects, `xcodeToolsActive` can flip. If it flips, you must re-run the static registration pass so `hideWhenXcodeAgentMode` takes effect immediately.
780
+
When the bridge syncs tools / disconnects, `xcodeToolsActive` can flip. If it flips, re-run the static registration pass so predicates that depend on `xcodeToolsActive` (e.g. `requiresXcodeTools`) take effect immediately.
784
781
785
-
This requires a small wiring change:
786
-
- add an event/callback in `XcodeToolsBridgeManager` (or expose status polling after sync)
787
-
- call `updateWorkflows(...)` (or a new `applyManifestSelection(...)`) when status changes
782
+
Note: `hideWhenXcodeAgentMode`depends only on `runningUnderXcode`, not bridge status β Xcode's coding agent always provides native equivalents regardless of bridge state.
0 commit comments