Pro plugin
Claude Desktop
Collects Claude Desktop cached conversations, Cowork agent sessions and audit logs, MCP server configuration, extensions, logs, and application state
ai.claudedesktopPromacOS 12.0+v1.0.0aicommunicationuserexecutionRun this plugin
Trigger collection for Claude Desktop on its own with the --plugin flag, or include it in a wider sweep by category.
# Just this plugin
macfor-pro collect --plugin ai.claudedesktop --output ./evidence.zip
# Dry run — list what would be collected
macfor-pro collect --plugin ai.claudedesktop --dry-runCompatibility
- macOS 12.0+
Licensing: ships in the macfor-pro binary. See Community vs Pro.
Options
Set an option with --plugin-opt ai.claudedesktop.<name>=<value>. The flag is repeatable, and a value can be a literal, env:NAME (an environment variable), file:PATH (a file's contents), or literal:VALUE (a literal that starts with env: or file:). Use env: or file:for secrets so they stay out of shell history. Options are recorded in the container's manifest.json and chain of custody; values read from env: or file:, and values of secret-looking keys such as audit_key, are recorded only as [set].
macfor-pro collect --plugin ai.claudedesktop \
--plugin-opt ai.claudedesktop.skip_content=true \
--plugin-opt ai.claudedesktop.audit_key=env:CLAUDE_SAFE_STORAGE_PW \
--output ./evidence.zipRequires v0.2.0+. --plugin-opt was added in collector v0.2.0. Without it the plugin runs with the defaults below.
Privacy defaults
- Secrets are redacted in records. Every record passes through redaction: values under secret-like keys (tokens, passwords, API keys, cookies, audit, device and link keys, salts), MCP server
envvalues and token-shaped strings (sk-ant-…, Bearer tokens, JWTs, GitHub, AWS and Slack tokens) become[REDACTED:sha256:<8 hex>], so equal secrets still correlate across records.include_secretsturns redaction off. - Raw evidence files are copied byte-for-byte. Logs, IndexedDB and LevelDB stores, Cowork transcripts, audit logs, outputs and uploads go into the container unmodified as original evidence. Redaction applies to records, not to these copies.
skip_contenthashes and records the content files instead of copying them. - Secret-bearing files are not copied without
include_secrets.claude_desktop_config.json,config.json, theCookiesdatabases, the device registry, bridge and remote-control state, extension settings and Sentry data are parsed into redacted records, but the files themselves stay out of the container. This also applies toinclude_raw. - safeStorage-encrypted values are recorded as present and never decrypted, cookie values are never emitted, and the Keychain is never read.
Content and privacy
| Option | Type | Default | Effect |
|---|---|---|---|
skip_content | bool | false | Metadata only. Drops message, transcript, tool-input and tool-result text, prompts, account name and email, and storage values. Content files (Cowork outputs and uploads, transcripts, audit.jsonl, raw IndexedDB files) are hashed and recorded but not copied. Structure, counts and tool names remain. |
include_secrets | bool | false | Turns off redaction (MCP env values, tokens, .audit-key, device keys) and copies the secret-bearing configuration, cookie and state files into the container. |
include_system_prompts | bool | false | Emits full Cowork session system prompts. By default only system_prompt_sha256 is recorded. |
include_storage_values | bool | false | Emits every Local and Session Storage value. By default only an allowlist (default model, first-login flag) has values; other keys are listed without them. Values are still redacted unless include_secrets is set. |
audit_key | string | unset | The examiner's Keychain “Claude Safe Storage” password, or an already-decrypted base64 Cowork audit key, used to verify the HMAC chains of Cowork audit logs. It is never logged or emitted. Without it, chains whose .audit-key is encrypted report key_encrypted. Pass it with env: or file: to keep it out of shell history. |
verify_audit | bool | true | Verifies Cowork audit HMAC chains. Set it to false to skip verification (status skipped). |
Evidence scope
| Option | Type | Default | Effect |
|---|---|---|---|
include_raw | bool | false | Copies the whole Claude/ and Claude-3p/ application data trees and ~/Library/Logs/Claude/, file by file. VM images, embedded binaries and GPU and V8 caches are excluded, symlinks are not followed, and secret-bearing files are skipped unless include_secrets is set. |
include_vm | bool | false | Copies the Cowork VM bundle (multi-GB Linux images). By default each file is only recorded, with its size and a SHA-256 up to vm_hash_limit_mb. |
vm_hash_limit_mb | int | 512 | The largest VM bundle file, in MiB, that is hashed when include_vm is off. With include_vm every copied file is hashed. |
http_cache_all_hosts | bool | false | Indexes every HTTP cache entry, not just Anthropic hosts. |
Skip artifacts
| Option | Type | Default | Effect |
|---|---|---|---|
skip_conversations | bool | false | Skips IndexedDB and HTTP cache conversations. |
skip_http_cache | bool | false | Skips the HTTP cache only. |
skip_cowork | bool | false | Skips Cowork sessions, audit logs, transcripts and spaces. |
skip_cowork_files | bool | false | Records Cowork outputs/ and uploads/ without copying them. |
skip_config | bool | false | Skips MCP and app configuration and extensions. |
skip_logs | bool | false | Skips all logs. |
skip_state | bool | false | Skips application state, Sentry and updater artifacts. |
skip_storage | bool | false | Skips Local and Session Storage. |
skip_cookies | bool | false | Skips cookie metadata. |
Artifacts (21 collected)
Each row corresponds to an entry in the plugin's artifacts.yaml manifest. Optionalartifacts are often absent, and their absence isn't recorded as an error. Plannedartifacts are documented locations the plugin doesn't collect yet. Where a path shows a version range, macfor only tries it when the source's macOS or application version is in that range.
metadata
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Desktop Installation claude_installOptionalSensitivemedium value | binary_plist | /Applications/Claude.app/Contents/Info.plist+4 more
| App bundle versions (CFBundleShortVersionString, CFBundleVersion), config.json first_launch_at, Local State uninstall_metrics.installation_date2, and preference key names with redacted scalar values. The manifest schema has one format per artifact, so format names the primary (plist) sources and path_formats lists each path's format; sensitive because preference values and account UUIDs are recorded. |
Claude Spaces claude_spacesOptionalSensitivemedium value | json | ~/Library/Application Support/Claude/local-agent-mode-sessions/*/*/spaces.json+8 more
| Spaces, generated artifacts, scheduled tasks, cached project metadata, and installed skills. format names the primary (JSON) sources; path_formats lists each path's format. |
Claude Cowork VM Bundle claude_vmOptionallow value | directory | ~/Library/Application Support/Claude/vm_bundles/claudevm.bundle/ | Linux VM images (rootfs, sessiondata, kernel), machine identifier, MAC and IP; multi-GB. |
Claude Raw Application Data claude_rawOptionalSensitivemedium value | directory | ~/Library/Application Support/Claude/+2 more
| Opt-in raw copy of the application data tree, excluding VM images and GPU caches. |
messaging
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Conversations (IndexedDB) claude_conversations_idbOptionalSensitivehigh value | leveldb | ~/Library/Application Support/Claude/IndexedDB/https_claude.ai_0.indexeddb.leveldb/+4 more
| Cached conversation metadata and full message trees (text, thinking, tool use). Storage-bucket stores map to origins via the QuotaManager buckets table. |
cache
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Conversations (HTTP Cache) claude_conversations_cacheOptionalSensitivehigh value | binary | ~/Library/Application Support/Claude/Cache/Cache_Data/+1 more
| Cached claude.ai API responses: conversations, files, artifacts, projects, memory, Cowork and Code sessions. |
session
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Cowork Sessions claude_cowork_sessionsOptionalSensitivehigh value | json | ~/Library/Application Support/Claude/local-agent-mode-sessions/*/*/local_*.json+3 more
| Agent session metadata (title, model, cwd, mounted folders, MCP tools, egress allowlists) plus output and uploaded files. |
Claude Code Desktop Sessions claude_code_sessionsOptionalSensitivehigh value | json | ~/Library/Application Support/Claude/claude-code-sessions/*/*/local_*.json+4 more
| Code session metadata (repository, cwd, branch) and git worktree registry. |
logs
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Cowork Audit Log claude_cowork_auditOptionalSensitivehigh value | jsonl | ~/Library/Application Support/Claude/local-agent-mode-sessions/*/*/local_*/audit.jsonl | Tool use, tool results, permission requests/decisions, and run results; _audit_hmac chain verifiable with the sibling .audit-key. |
Claude Main Logs claude_logs_mainOptionalSensitivehigh value | text | ~/Library/Logs/Claude/main.log+1 more
| Main-process log, local time, continuation lines unprefixed. |
Claude MCP Logs claude_logs_mcpOptionalSensitivehigh value | text | ~/Library/Logs/Claude/mcp.log+2 more
| MCP server lifecycle, JSON-RPC traffic and stderr per server. |
Claude Other Logs claude_logs_otherOptionalSensitivemedium value | text | ~/Library/Logs/Claude/claude.ai-web*.log+11 more
| Renderer console, Cowork VM/host loop, SSH, remote-control and in-app browser logs. |
Claude Sentry Scope claude_sentryOptionalSensitivemedium value | json | ~/Library/Application Support/Claude/sentry/scope_v3.json+1 more
| Sentry user ID, app/boot times, OS version, timezone, and navigation breadcrumbs. |
Claude Updater claude_updaterOptionalSensitivemedium value | binary_plist | ~/Library/Caches/com.anthropic.claudefordesktop.ShipIt/ShipItState.plist+3 more
| Update history (staged/installed versions and times), updater NSURLCache index, and app preferences. format names the primary (plist) sources; path_formats lists each path's format. Sensitive because NSURLCache URLs and preference values may carry identifiers or tokens. |
command history
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Cowork Transcripts claude_cowork_transcriptsOptionalSensitivehigh value | jsonl | ~/Library/Application Support/Claude/local-agent-mode-sessions/*/*/local_*/.claude/projects/*/*.jsonl+5 more
| Claude Code JSONL transcripts (messages, tool calls, results) and agent task lists. |
persistence
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude MCP Configuration claude_mcp_configOptionalSensitivehigh value | json | ~/Library/Application Support/Claude/claude_desktop_config.json+1 more
| MCP servers (command, args, env) launched by the app — a persistence/execution vector; env values may hold secrets. |
config
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude App Configuration claude_app_configOptionalSensitivemedium value | json | ~/Library/Application Support/Claude/config.json+1 more
| First launch, version history, running instance, last quit, last known account UUID, DXT allowlists. |
Claude Application State claude_stateOptionalSensitivemedium value | json | ~/Library/Application Support/Claude/bridge-state.json+10 more
| Remote-control bridge, device registry/ID, token usage, CLI ops and window state; secrets redacted. |
extensions
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Extensions claude_extensionsOptionalSensitivehigh value | json | ~/Library/Application Support/Claude/Claude Extensions/*/manifest.json+5 more
| Installed extensions (MCP bundles) with hashes and settings; per-tool enable toggles. |
storage
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Web Storage claude_web_storageOptionalSensitivemedium value | leveldb | ~/Library/Application Support/Claude/Local Storage/leveldb/+1 more
| Local/Session Storage keys (drafts, default model, first-login flags); values only for an allowlist by default. |
cookies
| Artifact | Format | Path | Notes |
|---|---|---|---|
Claude Cookies claude_cookiesOptionalSensitivemedium value | sqlite | ~/Library/Application Support/Claude/Cookies+1 more
| Cookie host, name, path and timestamps; encrypted values are never decrypted or emitted. |