Skip to main content

Camoscope

Camoscope is an opt-in local macOS audit utility. Installing or importing the package does not scan windows, read Accessibility content, or quit apps. It does not send scan results to a server. Those actions happen only when you run the corresponding CLI command.

Camoscope is a macOS command-line tool for inspecting on-screen windows whose WindowServer kCGWindowSharingState is 0. It lists the owning process, executable path and available code-signing metadata. With Accessibility permission, it can also read text exposed by the owning app's Accessibility (AX) tree.

The sharing-state flag is a useful audit signal. It is not a guarantee about what every screen-sharing, screenshot or recording backend captures. Test the capture method you rely on before drawing a conclusion. A scan that finds no matching windows means only that this scan observed none.

Intended use and permissions

Run Camoscope on your own Mac to inspect your own screen-share session. Do not deploy it to inspect someone else's machine without their knowledge and consent.

  • Scanning uses macOS WindowServer metadata. macOS may restrict the metadata available to a process; check a real capture when the result matters.
  • --dump, --stream, and the default scan's content preview need Accessibility permission for the terminal or executable running Camoscope. AX can expose text from all windows of the owning app, not just the flagged window. Apps may expose no readable AX text.
  • --quit uses a PID-bound macOS app termination request, then SIGTERM and SIGKILL if necessary. Signals require permission to act on the process, usually ownership. Camoscope checks the process start time before escalation to reduce the chance of targeting a reused PID. Quit is destructive and is allowed only for a PID present in the current scan; verify the PID before using it. It does not require Accessibility permission. --quit is never run during installation or a scan; it must be explicitly selected in the interactive menu or supplied on the command line.
  • 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.1
camoscope --version

Installation includes PyObjC dependencies for WindowServer, AX and PID-bound app termination. Public distribution is through compiled macOS wheels only; Linux and other platforms have no compatible wheel. There is no Homebrew release yet.

For a local checkout:

python3 -m pip install -e ".[test]"
python3 -m pytest -q

Usage

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

Use --no-content for a metadata-only scan. The default scan tries to read AX content for matching apps, so it requires Accessibility permission. A denied permission or failed WindowServer enumeration 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 AX permission failures also return nonzero status. The CLI never silently treats a failed WindowServer enumeration as an empty result.

Release status

Version 0.1.1 is a public beta. Automated tests cover CLI routing and important safety/error paths. A controlled matrix comparing the flag with actual capture output across macOS versions and capture backends is still pending, so this tool should be treated as an audit aid rather than a conclusive screen-share integrity verdict. The package is built and uploaded through PyPI Trusted Publishing from a tagged release. The PyPI release contains compiled extension wheels and no source archive. The Python audit implementation is not included as readable .py files, but compiled code can still be reverse engineered; no local software can guarantee secrecy against someone who has the binary.

License

MIT. The license text is included in the distribution.

Release files for camoscope 0.1.1

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.1
File
camoscope-0.1.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
camoscope-0.1.1-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
camoscope-0.1.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
camoscope-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
camoscope-0.1.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
camoscope-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
camoscope-0.1.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
camoscope-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
camoscope-0.1.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
camoscope-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
camoscope-0.1.1-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
camoscope-0.1.1-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.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL camoscope-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Size 111.2 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
36cadf248a1132d382e5969480c40f0fd647508eaee2fca4be8cc086c820c794
BLAKE2b-256 checksum
How to use checksums
7cf504c85e6df8009d5c4735a5e91715faceff563f852c195dc3362e4fa50fef
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.1-cp314-cp314-macosx_10_15_x86_64.whl

Download URL camoscope-0.1.1-cp314-cp314-macosx_10_15_x86_64.whl
Size 126.2 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
dd10d93c54386fc4e43190c23f9744f8f72fb3a38ca9c0cd2940d3a56dcbfd93
BLAKE2b-256 checksum
How to use checksums
be95b5706daf5e77ad93af0673abfa842fcdb17bbea079cdad1bed9354c76f3c
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.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL camoscope-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Size 109.3 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f531ef6c34bb68907eb7b0da2ca3b52bddfa6da71a59119d2786efed270b122f
BLAKE2b-256 checksum
How to use checksums
2adebd2aea7df7011039d0c07084bbee9b2cb80d61646969294abe79cc5ca8c5
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.1-cp313-cp313-macosx_10_13_x86_64.whl

Download URL camoscope-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl
Size 125.3 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
a66eb3cdf4ead1cc6dea8b7d4eb73b7e56fc57bb1d7919751461a72d53f0563b
BLAKE2b-256 checksum
How to use checksums
04d54cb4b55fc2e79cb986d43adb66b3b3b83729fc4a225b85bfc34fdbd4beee
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.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL camoscope-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Size 110.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0bfdcd629b66ce67daea57b62e48ef1aaa8923431767c2489c2168596fee22a7
BLAKE2b-256 checksum
How to use checksums
6a54a4ece4e0d34f996c0b947033629f237e71478266580dbb540ac8fd5a36d0
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.1-cp312-cp312-macosx_10_13_x86_64.whl

Download URL camoscope-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
Size 125.6 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
05a3e314d403a636d1c15d87fe847ccbc4783bee136223c835dfe7663638667a
BLAKE2b-256 checksum
How to use checksums
153bd81af1e6328b14115b8ef0be6fcc78a3a29bc7ebbfe5cfdbea86cde2d324
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.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL camoscope-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Size 113.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d7f56788be27141022cc8c1b09b0ade40c86c42c74ca5cf5d3d6bcc0fced0749
BLAKE2b-256 checksum
How to use checksums
824b6e27427bfca9e654ad6878420c17fdb61dabffc640f8c3a74b24879a1d22
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.1-cp311-cp311-macosx_10_9_x86_64.whl

Download URL camoscope-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Size 126.4 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
20388d92740b01edc1a61bd7f27334ca8e643c9ae4c35b9e45ef93102a390944
BLAKE2b-256 checksum
How to use checksums
81ee49070999ff063867eb9a263a7bb60fe215080a28403429aecf843c8202f4
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.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL camoscope-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Size 114.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9fa8469ec2106710e7f7cd6cde39c0de075680d8006a3edbcb545cb0983e324d
BLAKE2b-256 checksum
How to use checksums
9fa1bb1e3fb264e088a4f15cea0e7f07c695064228de1ac5b470ca8124ecbbdc
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.1-cp310-cp310-macosx_10_9_x86_64.whl

Download URL camoscope-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Size 127.6 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
27afb9fd89bf55ad204baecbc0b3bb927e43a2b9a061bfd04420b6f4f8c56dbf
BLAKE2b-256 checksum
How to use checksums
2b921f3beb2d8f610e16d50989f5b17c22448e1781e5854d9f6c718651999878
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.1-cp39-cp39-macosx_11_0_arm64.whl

Download URL camoscope-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Size 115.0 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6117771e7a58a6a752ef0000b255dbd408104286ea35e3f9f0b3c58f66c64e68
BLAKE2b-256 checksum
How to use checksums
3218bff33ecab0b0d655fc13f7f4c3610dcb337cc892ce114c9d69e478b6cb70
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.1-cp39-cp39-macosx_10_9_x86_64.whl

Download URL camoscope-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Size 128.5 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
373b8f67aaf17ffedc380e53e4f9bb97466a173c236b4d438eaae39a8c73cb1d
BLAKE2b-256 checksum
How to use checksums
82c3ab7823dfeebbb81ba69d97158d93b2abd9a2251ff271f5079fe771207b8a
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

0.1.2

12 release files

This release

0.1.1 This release

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