GazeFocus uses your camera continuously while it runs, so this page is specific rather than vague.
A 720p video stream at 15 frames per second is handed to Apple's Vision framework, which returns the angle of your head and where your face sits in the frame. Those few numbers are all GazeFocus keeps from each frame.
Each frame exists in memory for a few milliseconds and is then released. No frame is written to disk, cached, buffered to a file, or shown in any window. There is no recording feature and no way to enable one.
Nothing. GazeFocus ships without the network entitlement, which means the operating system itself prevents it from opening a connection. There is no analytics, no crash reporting, no update check, and no account system — the app is free, so there is nothing to verify.
One file: ~/Library/Application Support/GazeFocus/calibration.json. It
contains your calibration points — head angles paired with screen coordinates — and
nothing else. No images. Delete it any time; the app simply asks you to recalibrate.
Your preferences live in the standard macOS defaults store under
com.gazefocus.app.
GazeFocus releases the camera when you pause it (⇧⌘G), when your Mac locks, and when it sleeps. The camera indicator light is an honest signal: if it's off, GazeFocus isn't looking.
This permission lets GazeFocus raise and focus windows. It is used for exactly that. It is not used to read window contents, log keystrokes, or inspect what you are working on. The app does observe that a key was pressed — never which one — purely so it can avoid moving focus while you're typing.
Questions about any of this are welcome — the source is public, so the answers are checkable.