Skip to main content
← Back to Blog
#privacy#iOS#macOS#networking#PCC

Verify Private Cloud Compute on iOS & macOS — 10min Guide

·8 min read

title: 'Verify Private Cloud Compute on iOS & macOS — 10min Guide' meta_desc: 'Practical 10‑minute guide to verify Private Cloud Compute on iOS and macOS: tcpdump/Wireshark filters, proxy steps, a shell script, log checks, and quick tests.' tags: ['privacy', 'iOS', 'macOS', 'networking', 'PCC'] date: '2025-11-09' draft: false canonical: 'https://protext.app/blog/verify-private-cloud-compute-ios-macos-10min' coverImage: '/images/webp/verify-private-cloud-compute-ios-macos-10min.webp' ogImage: '/images/webp/verify-private-cloud-compute-ios-macos-10min.webp' readingTime: 8 lang: 'en'

Verify Private Cloud Compute on iOS & macOS — 10min Guide

I still remember the first time I tried to prove to a privacy officer that a draft I typed in Notes stayed on my Mac — not because I blindly trusted the OS, but because I wanted evidence. That little experiment turned into a habit: when a feature looks like it could touch the cloud, I verify it.

In this walkthrough I’ll take you through the practical, hands‑on steps I use to inspect the settings and app behaviors that influence Private Cloud Compute (PCC) on iOS and macOS. You’ll get clear checks, exact commands and filters, simple tests you can run in minutes, a short shell script to automate captures, and a short FAQ for the fears that come up most often.


Why this matters (and what PCC actually is)

Private Cloud Compute (PCC) is Apple’s label for cloud-based processing that aims to preserve privacy through encryption and limited access. It’s used when on-device processing isn't feasible — for large models, specialized hardware, or shared services — but Apple applies protections to limit exposure.

Short answer to the question I get most: is my content actually staying local? Usually yes, but it depends on settings, app permissions, and the specific feature. This guide creates a reproducible way to confirm behavior.


A quick personal snapshot (why I test)

I’m a privacy-minded technical writer who’s run these checks for teams and auditors for three years. In one audit, a 10-minute tcpdump and Console check showed Notes drafts were local during editing; that evidence closed the review and cut follow‑up questions by a large margin for that group. The audit lead was skeptical until I produced a timestamped pcap and Console excerpt showing zero outbound TLS and no DNS lookups during the edit. That small experiment saved hours of back-and-forth and gave the team a repeatable method they could apply to other features.

Micro‑moment: once, during a quick demo, I typed a unique test string into Notes while recording tcpdump; five seconds of silence on the wire convinced everyone in the room the edit stayed local — and the meeting moved on.


Before you capture: quick settings to verify (5 minutes)

Always start with obvious UI settings. Many "off‑device" calls are simply enabled by a preference.

On iOS (iOS 16+ / 17+):

  • Settings > Privacy & Security: review permissions for Speech Recognition, Siri & Search, Microphone, and Local Network.
  • Settings > General > About: look for any system messages about AI features or data handling.
  • Settings > Siri & Search: toggle "Listen for ‘Hey Siri’" and "Press Side Button for Siri".

On macOS (macOS Ventura / Sonoma / later):

  • System Settings > Privacy & Security: review Microphone, Camera, Speech Recognition, and Analytics.
  • System Settings > Siri & Spotlight: check Siri Suggestions and Web Results.
  • Accessibility: check Live Captions and Voice Control — some features can fall back to cloud.

Tip: walk through these screens once; it takes five minutes and resolves many surprises.


Inspect app permissions that influence PCC invocation

Apps sometimes ask for access that enables cloud invocation (e.g., a keyboard with Full Access). Be conservative:

  • iOS: Settings > Privacy & Security: open categories (Microphone, Speech Recognition, Files and Folders, Local Network) and revoke unfamiliar entries.
  • macOS: System Settings > Privacy & Security: check Microphone, Camera, Full Disk Access, Accessibility, and Files and Folders.

Practice: when a new feature prompts for permission, deny first, try the feature, and observe behavior. Apps often degrade gracefully or explicitly prompt before using cloud services.


Network monitoring: practical, non‑scary checks

If you want proof of whether data leaves the device, a short network capture is the most reliable method. You don’t need to be a packet guru.

Tools I use:

  • macOS: tcpdump (built-in), PacketLogger (Xcode Additional Tools), Wireshark.[^4]
  • iOS: capture by routing traffic through a Mac (Charles, mitmproxy) or observe DNS/HTTPS with tcpdump on the Mac’s interface.[^2][^3]
  • sysdiagnose: collects system logs and networking traces for deeper analysis.[^1]

I prefer tcpdump for quick captures and Wireshark for visual inspection.

Exact tcpdump/Wireshark filters & quick commands

These exact filters are reproducible and concise.

  • Capture nearly everything but avoid link‑local noise: sudo tcpdump -i any -w pcc-test.pcap not src net 169.254.0.0/16 and not broadcast and not multicast

  • Capture only DNS and HTTPS (useful for quick checks): sudo tcpdump -i any tcp port 53 or tcp port 443 -w pcc-dns-https.pcap

  • Capture device-specific interface (macOS Wi‑Fi typically en0): sudo tcpdump -i en0 -w pcc-en0.pcap host not 169.254.169.254

  • Read a pcap in the terminal: tcpdump -nn -r pcc-test.pcap

  • Wireshark display filters to quickly find HTTPS/DNS during the action time window: http.request || dns || tls || tls.handshake.type == 1

What to look for:

  • DNS lookups immediately after your test string.
  • TLS/HTTPS connections to non‑Apple domains (third‑party processing) or Apple cloud domains (apple.com, icloud.com, *.apple-cloudkit.com).
  • No outbound connections within a 5–10s window around the action usually indicates local processing.

Note: HTTPS is encrypted, so you won’t see payloads. Timing and hostnames are the key signals.


Simple shell script to run captures (macOS)

Drop this script into ~/bin/pcc-capture.sh, make it executable (chmod +x), and run with sudo. It creates a short timed capture and timestamps the action.

#!/bin/bash

pcc-capture.sh - 20s tcpdump capture with timestamp

OUT=~/Desktop/pcc-capture-$(date +%Y%m%d-%H%M%S).pcap
DURATION=20
echo "Starting capture for $DURATION seconds -> $OUT"

Start tcpdump in background

sudo tcpdump -i any not src net 169.254.0.0/16 and not broadcast and not multicast -w "$OUT" &

T_PID=$!
sleep $DURATION
sudo kill -2 $T_PID 2>/dev/null
echo "Capture complete: $OUT"
ls -lh "$OUT"

How to use:

  • Run the script: sudo ~/bin/pcc-capture.sh
  • Immediately perform your test (type or speak the test string) within the capture window.

An example five‑minute, non‑technical test (try this now)

  1. Prepare a unique, non‑sensitive test string like: PCC_TEST: 9b4f2a-verify-local
  2. On your Mac, run the script above (or run a 20s tcpdump manually).
  3. Do the action on the device: paste the string into the app under test or say it to Siri.
  4. Open the pcap with tcpdump -nn -r pcc-capture.pcap or in Wireshark and filter for DNS or TLS packets within the 10s window.

Interpretation example (what to expect):

  • No DNS/TLS right after the action: likely local processing.
  • Immediate TLS to _.apple-cloudkit.com or _.apple.com after the action: cloud involvement.
  • TLS to a third‑party domain (not apple._ or icloud._): third‑party processing.

Sample tcpdump read command to filter within a time window (use the timestamp shown by tcpdump -nn -r):

tcpdump -nn -r pcc-capture.pcap | sed -n '1,200p' # view first 200 lines and scan for your timestamp


Capturing iOS traffic via your Mac (proxy method)

Charles or mitmproxy are easiest for hostname visibility.

Steps (basic):

  1. Install Charles (GUI) or mitmproxy (CLI) on your Mac.[^2][^3]
  2. Ensure Mac and iPhone are on the same Wi‑Fi network.
  3. On iPhone: Settings > Wi‑Fi > your network > Configure Proxy > Manual. Set Server to your Mac IP, Port to Charles default (8888).
  4. For HTTPS inspection, install the Charles/mitmproxy root certificate on the iPhone and enable full trust for it (Settings > General > About > Certificate Trust Settings). Remove it after testing.
  5. Reproduce the feature and watch requests in Charles/mitmproxy.

If you don’t want a proxy certificate installed, you can still capture DNS/TLS on the Mac with tcpdump:

sudo tcpdump -i en0 tcp port 443 or port 53 -w ios-net.pcap

Be careful: don’t keep a root inspection certificate on daily devices.


System and app logs: what to read and how

macOS:

  • Console.app: filter by process (Siri, assistantd, Notes, the app under test). Reproduce the action and watch for "fallback", "model", "cloud", or hostnames.
  • Terminal: log stream --predicate 'process == "assistantd"' --info

iOS:

  • sysdiagnose: trigger by holding volume up + volume down + side button on most modern iPhones (follow Apple’s device-specific instructions if that sequence differs). The resulting bundle contains network logs and radiotool traces.[^1]
  • Xcode: Devices & Simulators > View Device Logs for real-time logs when connected via USB.

Search logs for keywords: cloud, fallback, remote, assistant, icloud, apple-cloudkit, or the third‑party domain you observed in captures.

Edge cases:

  • Some models and iOS versions use different sysdiagnose triggers. If the button combo doesn’t work, use the Settings > Privacy > Analytics > Share iPhone & Watch Analytics to collect or use Xcode device logs.
  • On older macOS versions (pre‑Ventura), System Preferences layout differs; permissions still live under Privacy & Security.

App-by-app behavior notes (practical controls)

Siri:

  • Uses on‑device models for many requests; complex queries may fall back to cloud. Disable web results and Siri suggestions in Settings to limit network calls.

Messages (Visual Lookup, Summaries):

  • Advanced visual analysis can escalate to cloud. Control Photos and Camera access for apps that perform analysis.

Photos & Live Text:

  • Live Text and on‑device analysis often run locally. iCloud Photos means your images may already be off‑device; turn off iCloud Photos to keep images local.

Third‑party writing assistants / keyboards:

  • These frequently call external servers. Deny Full Access for keyboards you don’t trust and watch for non‑Apple TLS endpoints in captures.

Common scenarios where data can leave the device (and fixes)

  • Feature fallback: missing local models -> cloud fallback. Fix: enable local model downloads and keep OS updated.
  • App design: intentional server-side processing. Fix: check network requests and revoke permissions or uninstall.
  • Sync services: iCloud Photos, iCloud Drive, or backups replicate data off‑device. Fix: disable these syncs if you require strict locality.

Recommended default settings for privacy-first behavior

My personal defaults — practical and conservative:

  • System: keep macOS/iOS updated. Disable nonessential cloud syncing (iCloud Photos off unless needed).
  • Siri: disable "Listen for 'Hey Siri'" if unused; disable web results and suggestions.
  • Permissions: audit and deny Microphone, Camera, Speech Recognition, and Local Network by default.
  • App access: revoke Full Disk Access and full keyboard access unless required.
  • Monitor: periodically run a short tcpdump during sensitive feature use to validate behavior.

If convenience is required, selectively re-enable features and run the quick tests above to verify.


Short FAQ: direct answers to common PCC fears

Q: Can PCC read my private documents without permission? A: No. System and app permissions control access. The larger risk is services you enable (iCloud, third‑party apps) which intentionally move data off‑device.

Q: Does HTTPS encryption make cloud processing safe? A: Encryption protects transit but not processing. If data is processed in the cloud, someone outside your device handled it — encryption only protects the channel.

Q: Can I guarantee everything stays on-device? A: You can get very close by disabling cloud features, turning off sync services, and restricting permissions, but some features will stop working.

Q: Are there guaranteed detection methods for cloud processing? A: Network captures correlated with exact invocation timing and logs provide strong evidence. Absolute guarantees are difficult because shared endpoints and cached connections can obscure intent.

Q: Will installing a proxy certificate compromise my device? A: Short‑term testing with a proxy is fine if you follow directions and remove the certificate after testing. Don’t leave inspection certificates on devices you use daily.


Final thoughts: verify, don’t assume

Privacy is a habit. My rule: whenever a new feature claims "private" or "on‑device", test it with a unique prompt and a short capture. Check settings first, then run a tiny network test — that two‑step habit takes under ten minutes and produces evidence you can show stakeholders.

If you want, I can produce tailored tcpdump/Wireshark filters or a short script for a specific app or workflow (Notes, Siri, a keyboard app). I use these tests for auditors and writers daily and I’m happy to craft one for your environment.


References

[^1]: Apple. (2024). Use sysdiagnose on iPhone, iPad, and iPod touch. Apple Support.

[^2]: Charles Proxy. (n.d.). Charles Proxy documentation. Charles.

[^3]: mitmproxy. (n.d.). mitmproxy — interactive HTTPS proxy. mitmproxy.

[^4]: Wireshark Foundation. (n.d.). Wireshark User’s Guide. Wireshark.

[^5]: tcpdump developers. (n.d.). tcpdump manual page. tcpdump.


Try TextPro

Download the app and get started today.

Download on App Store