Camoscope
Project page and documentation · Get help · Support this and other apps
Camoscope is a macOS tool that 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 flags windows for review, shows the owning app and available app details, and can optionally show text exposed to Accessibility tools.
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.--quitfirst 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.3
camoscope --version
Public distribution is through compiled macOS wheels only. Linux and other platforms have no compatible wheel, so pip cannot install the published package there. A source checkout run on another operating system reports that the platform is not supported. 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.
camoscopecommand not found: usepython3 -m camoscopewith 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.3 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.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 1.4 MB
Release files / camoscope-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | camoscope-0.1.3-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 |
eb7416e8d5fcb765366c84a5b022b0cb683edc03b599f8689e28d0e9621afb40
|
|
BLAKE2b-256 checksum How to use checksums |
560df6d70f6a588b033b14f8082f7c7f7661e6d49e2ee8b97464a08ca022ab48
|
| 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 logRelease files / camoscope-0.1.3-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | camoscope-0.1.3-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 |
49ff19d86aedd224656b6869470c04a1ea522ef8366d923c5765f936b0e678b4
|
|
BLAKE2b-256 checksum How to use checksums |
b7e473ab92185fe76834e785b7230c0ef11abebc38bb970889a206a71c2cc85e
|
| 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 logRelease files / camoscope-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | camoscope-0.1.3-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 |
bcb38186311ccde5879ed8f7e6fd7bedda365c39f4440042738840a221cc7641
|
|
BLAKE2b-256 checksum How to use checksums |
014c40b4afd343830797e73dc606e4c3d2baf0a53bbed3c63510ed25f05d3edd
|
| 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 logRelease files / camoscope-0.1.3-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | camoscope-0.1.3-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 |
78b1ec4e25e5d8535c52f1e5550b29ba1fdd3bba08de45547cb6570571e542c4
|
|
BLAKE2b-256 checksum How to use checksums |
4ae4f5b11568147af968a95984c97e94bb5d3c6c66533ba7979cc9ec1c1568b6
|
| 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 logRelease files / camoscope-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | camoscope-0.1.3-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 |
7aacc41a5f8192166215c3f8992418afba0a50326598fb322abf89268e687a70
|
|
BLAKE2b-256 checksum How to use checksums |
35a91d924d093becf98a50b2ee2f4da2ba01415d5885bb62c22d6a7cc108156f
|
| 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 logRelease files / camoscope-0.1.3-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | camoscope-0.1.3-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 |
a0c82ea676a66fde93a94d0c2dfb9d5963b031c78280cc4f661086a466304a88
|
|
BLAKE2b-256 checksum How to use checksums |
7e89c52acf0625137bdcd40ec74d8ce1690f16be3f4c51a162c5200788cb0e45
|
| 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 logRelease files / camoscope-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | camoscope-0.1.3-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 |
9392e54a8f799942407b738cfe3bb7a575b5f207061fa87ccbdfb7b5ddec0796
|
|
BLAKE2b-256 checksum How to use checksums |
de03aafb58594b56eb58e790ec6eff64894a35303309187cdfb75d391f7b7412
|
| 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 logRelease files / camoscope-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | camoscope-0.1.3-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 |
11f23d1da9ec344dd64e115b6314bc358ae1cd9b7a4c09740aa1e8ff6bb940d6
|
|
BLAKE2b-256 checksum How to use checksums |
3f8c62102899eaaccf6e3a0aabf3357816975d5763cb44b1d8d451986b7db2f1
|
| 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 logRelease files / camoscope-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | camoscope-0.1.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 114.9 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a220cb58b3aed06693e63ef0223412867ce39abb0616195d8335f9b3cda50aeb
|
|
BLAKE2b-256 checksum How to use checksums |
67b782f7880c3f1134985db8598e3cf56d201edc434cc01c8b6562eba19f698a
|
| 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 logRelease files / camoscope-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | camoscope-0.1.3-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 |
dd5dbabd2014460063f46c695e54283c0b9227539fbb79c727371ec1e1946ab8
|
|
BLAKE2b-256 checksum How to use checksums |
426c7f29e7d5c290f7901c668b330a8ae8105af3064525b1ff07660c3108a48b
|
| 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 logRelease files / camoscope-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | camoscope-0.1.3-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 115.5 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f843ae4acf4c6ed1a03a68fe7ea29e37470b4d37be16e0fb7aa63bb05ee61212
|
|
BLAKE2b-256 checksum How to use checksums |
457c6303e57deb500945f2316321231bae08b2214fa0acf1f0e54c7eceb62518
|
| 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 logRelease files / camoscope-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl
| Download URL | camoscope-0.1.3-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 |
4af69acab12f3e31d48098c048bbad69a3342687236c5ba4f849009a487675b8
|
|
BLAKE2b-256 checksum How to use checksums |
e4ae0521327bf939acef41317e7a5f56d014bf2db5bffe1d13a38f7559d1ca79
|
| 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