CoreFoundation plist parse warning on startup when computer-use MCP is enabled (macOS)

Resolved 💬 1 comment Opened Apr 17, 2026 by intel352 Closed May 26, 2026

Summary

When the built-in computer-use MCP server is enabled for a project, Claude Code prints two identical CFPropertyListCreateFromXMLData() warnings to stderr on every interactive startup in that project's directory:

2026-04-16 23:19:55.130 claude[38732:6432735] CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary on line 3. Parsing will be abandoned. Break on _CFPropertyListMissingSemicolon to debug.
2026-04-16 23:19:55.130 claude[38732:6432735] CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary on line 3. Parsing will be abandoned. Break on _CFPropertyListMissingSemicolon to debug.

CF abandons the parse and Claude continues normally — the tool still works — so this is cosmetic, but the warning is noisy and looks alarming.

Reproduction

  1. macOS 14.5 (arm64), Claude Code 2.1.112 installed to ~/.local/bin/claude (native)
  2. Enable computer-use for a project in ~/.claude.json:

``json
"projects": {
"/path/to/project": { "enabledMcpServers": ["computer-use"], ... }
}
``

  1. cd /path/to/project && claude → warnings appear on stderr at startup
  2. Same claude in any directory where computer-use is not in enabledMcpServers → no warnings

Investigation

  • otool -L on the claude binary only links libSystem, libicucore, libresolv, libc++. No static link to CoreFoundation or Security.
  • Strings in the binary show runtime dlopen of /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation and /System/Library/Frameworks/Security.framework/Security, plus references to AXIsProcessTrustedWithOptions and CG event APIs — i.e. the FFI bindings used by computer-use.
  • The warning is emitted only when computer-use is in enabledMcpServers for the cwd's project — confirmed by toggling that single field and re-running.
  • CFPropertyListCreateFromXMLData with an old-style-plist "missing semicolon on line 3" is what CF logs when it's handed JSON-ish or non-plist text. Something in the FFI init path (or a framework it loads transitively) is passing non-plist bytes into the plist parser.

Expected

No stderr noise on startup when computer-use is enabled.

Workaround

Remove "computer-use" from enabledMcpServers for the project, or launch with claude 2>/dev/null (hides all stderr).

Environment

  • macOS 14.5 (23F79), arm64
  • Claude Code 2.1.112 (native install)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗