Skip to main content

Camoscope

Project page and documentation · Get help · Support this and other apps

Camoscope helps interviewers and proctors investigate app windows a participant may be concealing from a screen share, including during online interviews. Run with the participant's knowledge and consent on their Mac, it identifies windows marked as excluded from capture, shows the owning app and available app details, and can show text exposed to Accessibility tools.

It flags on-screen windows for which macOS reports WindowServer kCGWindowSharingState as 0. That flag is a clue to investigate, not a measurement of what a particular screen-sharing or recording app captures.

Installing or importing Camoscope does not scan windows, read app text, or quit apps. It does not send scan results to a server. Those actions happen only when you run the corresponding command.

A result is a reason to investigate; it does not prove what the interviewer's screen-share view contains or establish misconduct. A scan with no results does not prove that every window or browser tab is visible. Compare findings with the actual share or recording before drawing a conclusion.

Intended use and permissions

Run Camoscope locally on the participant's Mac with their knowledge and consent. It cannot remotely inspect a participant's computer from the interviewer's Mac.

  • A scan checks window information supplied by macOS. Permissions and the current desktop session can affect what is available.
  • --dump, --stream, and the default scan's content preview need Accessibility permission for the terminal or executable running Camoscope. The text may come from other windows of the same app, not just the window reported by the scan. Some apps expose no readable text.
  • --quit first asks the selected app to close, then may force it to stop. This can discard unsaved work. It is allowed only for an app found in the current scan and requires permission to control that app. Check the PID before using it. It does not need Accessibility permission and never runs during installation or an ordinary scan.
  • Code-signing output is inspection metadata, not a signature validity verdict. Unknown, ad-hoc, or unsigned status alone does not establish that an app is malicious.

Install

On macOS with CPython 3.9 through 3.14 (Apple Silicon or Intel):

python3 -m pip install camoscope==0.1.2
camoscope --version

Public distribution is through compiled macOS wheels only. Linux and other platforms have no compatible wheel. There is no Homebrew release yet.

First check

Run a scan without reading app text:

camoscope --no-prompt --no-content

The command prints a summary and exits. If it reports a window, compare it with what the interviewer can see in the actual share or recording. If it reports no windows, that is only the result of this scan. It does not detect every concealed browser tab or guarantee that every app window is visible.

Usage

camoscope --help
camoscope --no-prompt --no-content  # one scan without app text
camoscope                           # scan with text preview, then interactive menu
camoscope --watch --no-content      # rescan every 2 seconds
camoscope --dump PID                 # show text exposed by the app once
camoscope --stream PID --interval 3  # repeat until stopped or PID exits
camoscope --quit PID                 # terminate the selected process

Use --no-content to scan without reading app text. The default scan tries to show available text for matching apps, so it needs Accessibility permission. A denied permission or failed window scan is an error, not a negative finding. Camoscope prints results to the terminal and does not save them automatically.

PIDs must be positive integers. --interval must be a positive finite number. --quit returns a nonzero exit status if the process cannot be terminated. Scan and Accessibility failures also return nonzero status. The CLI never treats a failed window scan as an empty result.

Permissions and troubleshooting

  • Accessibility denied: --dump, --stream, and the default scan's text preview need permission for the terminal or app running Camoscope. Open System Settings → Privacy & Security → Accessibility and allow that app. You can still scan without text using --no-content. See Apple's Accessibility permission guide.
  • Scan failed or seems incomplete: run Camoscope from a signed-in desktop session. Check System Settings → Privacy & Security → Screen & System Audio Recording if macOS asks for access. Window information can be limited even when the command returns successfully. Compare against a real share or recording. See Apple's screen-recording permission guide.
  • camoscope command not found: use python3 -m camoscope with the same Python you used for installation, or activate its virtual environment.
  • Quit refused: Camoscope only quits a process found in the current scan when macOS identifies it as a running app. It will refuse an unknown or changed process rather than send it a signal.

If you need help, use the shared developer contact page.

Release status

Version 0.1.2 is a public beta. Automated tests cover command behavior and important safety cases. A broader comparison with actual screen-sharing and recording apps across macOS versions is still pending. Treat Camoscope as an investigation aid, not a conclusive visibility or misconduct verdict. The PyPI release contains compiled macOS wheels and no source archive. Compiled code can still be reverse engineered.

License

MIT. The license text is included in the distribution.

Support the apps

If Camoscope or another app I build is useful to you, you can sponsor their continued development. For questions, bug reports, or collaboration, use the developer contact page.

Release files for camoscope 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for camoscope 0.1.2
File
camoscope-0.1.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
camoscope-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
camoscope-0.1.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
camoscope-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
camoscope-0.1.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
camoscope-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
camoscope-0.1.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
camoscope-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
camoscope-0.1.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
camoscope-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
camoscope-0.1.2-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
camoscope-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details

Total release size: 1.4 MB

Release files / camoscope-0.1.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL camoscope-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Size 111.6 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d63287d89ede38bf72675fd2bf7d95ed2c03502a4288424336d7ad7579bb92da
BLAKE2b-256 checksum
How to use checksums
7eddda1db3e3ce382cd48fbfc47b23faad4ece8dbb051ed54e01d5a69aa95706
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl

Download URL camoscope-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl
Size 126.7 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
ba002b06ed24ffaa1cc2e92f62a11cd3d717f8723f6562c898b2ca7747c9b68d
BLAKE2b-256 checksum
How to use checksums
ae29eca9b3b6017f67ba36625ee4572772e9b0d4f3eb377ea46bc13cbe953bcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL camoscope-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Size 109.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2aa2a8c98d1c4b42919d3f656bae1151be2ca61274799726618012f0698f017e
BLAKE2b-256 checksum
How to use checksums
ab5e46faef54cc84f788f70077748e525c0726d1ad0f4c35a1f73f109dc7d575
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl

Download URL camoscope-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl
Size 125.8 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
736c2f0f49e815238cc2a0ca773089c3bfeb7b599c1b4e1d2e27af9422afb1b7
BLAKE2b-256 checksum
How to use checksums
0a5a270328937a32e79b764c7847b6e0930ebd70dc38b6d9cb445c04ff9c4a9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL camoscope-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Size 110.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c2b200693251f26430aad5973109b3c8012d631bc303676c01fa07561f0af7cd
BLAKE2b-256 checksum
How to use checksums
0f9ae4c4b04074786728057c17bb6b3d101fbc87a2a695abef52566decd8e718
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl

Download URL camoscope-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl
Size 126.1 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
289b97563ee192b2dd9facdb191a96e04ef54317108127ae0fbeb38eebaf6eb5
BLAKE2b-256 checksum
How to use checksums
124a2c6eb9c627e80b327663cc13a5dc0907280188d2bf02b4d5a646ae1bd791
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL camoscope-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Size 113.4 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
15197e449e64eef69b4bc337a4320e18ae62e80de034d13875b92b9722b26e86
BLAKE2b-256 checksum
How to use checksums
9db5e93801a0dbcabca6f803cfc361429c62961798e578db1d656e716f0298db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl

Download URL camoscope-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl
Size 126.8 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
36f705fdb9dc64b473811938bcbb26c2e888550577fe600c466a447275461831
BLAKE2b-256 checksum
How to use checksums
5477b235590db35f2d80e06e87a5a0b0aaaeb98f5804c9c0e3028bb853827259
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL camoscope-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Size 114.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ad8a704d7674cc777c4b43e04b7a13c0599058514289f085e60633edf434aec4
BLAKE2b-256 checksum
How to use checksums
c77017ffe6716494e6864968a2e84ae2ba332ea6e78fceefa0b138a41cdbd56b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl

Download URL camoscope-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl
Size 128.1 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
e219a8670cf3cdf4cac0eeeffbfaa45ee4b50b1108be23fdace57e09996ae807
BLAKE2b-256 checksum
How to use checksums
44e3bf2fa7b6163e9299a23faeba0f1d7a5003653fc2f66cb456915bdea3d671
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp39-cp39-macosx_11_0_arm64.whl

Download URL camoscope-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Size 115.4 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
71674bf6bd43873b4f9ed2efb2f3b2a8f983a060a385eed50e7e913e25d9ae5c
BLAKE2b-256 checksum
How to use checksums
f81bf91a10b28e93e10a991b8c5a90062e692a27cddb0fc24c7985da66bffd9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / camoscope-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl

Download URL camoscope-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl
Size 129.0 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
1611cb7ec2758a9f533a506383acc55043f1775fec330d2b53be689fa4a429a4
BLAKE2b-256 checksum
How to use checksums
067f366008839e3e9c7f91657f9c313006119cd3fab563f346761be7bce26e77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.3

12 release files

This release

0.1.2 This release

12 release files

0.1.1

12 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page