Skip to content

Troubleshooting

Chrome shows “No internet” / connection refused

Cause: ProxyPro is not running but the system proxy is still pointed at 127.0.0.1:9090. Chrome obeys the system proxy → connects to dead port → fails.

Fix — fastest:

Terminal window
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off

Fix — restart ProxyPro:

Terminal window
cd /path/to/proxypro
make dev

Cert errors (NET::ERR_CERT_AUTHORITY_INVALID) in Chrome

You installed the CA into the login keychain but not the system keychain. Chrome reads the system keychain only.

Terminal window
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain \
~/Library/Application\ Support/ProxyPro/ca/root.pem

Then fully quit Chrome (cmd+Q, not just the window) and reopen. See Install the certificate.

Cert installed but Chrome still rejects

Chrome caches trust per-process at startup. Quit ALL Chrome windows with cmd+Q (not the red X), then reopen. The new process re-reads trust from the system keychain.

Also verify the cert is actually trusted:

Terminal window
security find-certificate -c "ProxyPro" -p /Library/Keychains/System.keychain | \
openssl x509 -text -noout | grep -A2 "Certificate Purposes"

You should see SSL/TLS listed under the purposes.

Some sites work, others don’t (Google, Facebook, YouTube)

These sites preferentially use HTTP/3 (QUIC). Chrome caches successful QUIC sessions and bypasses our Alt-Svc strip until the cache expires.

Force HTTP/2 in Chrome:

  1. Visit chrome://flags/#enable-quic
  2. Set to Disabled
  3. Relaunch Chrome (the prompt at the bottom).

After this, all browser traffic falls back to HTTP/2 which ProxyPro decrypts fully.

”captures stream error CANCELLED” in the dev console

Harmless. React StrictMode in dev double-mounts the captures hook, which opens then immediately cancels a stream. The fresh re-mount opens the real stream that carries your captures.

Production builds run without StrictMode and don’t show this. The dev log was suppressed in P06.5 so you shouldn’t see it on current builds.

”Cannot find module ‘protobufjs/minimal’” at app launch

You’re on a stale build that predates the ts-proto extension fix. Run:

Terminal window
make proto # regenerate with importSuffix=.js
cd app && pnpm build

then relaunch.

”size mismatch” gRPC marshal error

You’re on a build that predates the Flow snapshot fix. Update + rebuild:

Terminal window
git pull
make engine
cd app && pnpm build

If you’ve got local changes and can’t pull: the fix is in engine/internal/proxy/recorder.goOnStarted / OnCompleted must clone the Flow via proto.Clone before buffering.

Two proxypro-engine processes after make dev

A previous dev session didn’t exit cleanly. Kill both:

Terminal window
pkill -f proxypro-engine
pkill -f "electron.*proxypro"
sleep 1
make dev

Mobile device says “Profile installation failed”

The .mobileconfig is unsigned (we don’t have a paid Apple Developer cert). iOS shows an “Unsigned profile” warning but still allows install — tap Install anyway, then enter your device passcode.

If the profile downloads but doesn’t open the install flow:

  1. Settings → General → VPN & Device Management
  2. The profile appears under “Downloaded Profile”
  3. Tap it → Install

Playwright tests fail with timeouts

You have make dev running. Both can’t bind :9090. Kill the dev session before running E2E:

Terminal window
pkill -f proxypro-engine
pkill -f "electron.*proxypro"
cd app && pnpm test:e2e

Anything else

Open an issue on github.com/trongitnlu/proxypro with the output of:

Terminal window
sw_vers
go version
node --version
pnpm --version
~/Volumes/DATA/Project/proxypro/engine/bin/proxypro-engine --version