Report privately via GitHub Security Advisories rather than a public issue. Expect a reply within a week.
Oddpod runs unattended in your login session with no network access and no elevated privileges — see "Security model" in the README for the full surface.
Untrusted input reaches the process in exactly one place: Bluetooth device names, which
come from system_profiler and are interpolated into the AppleScript passed to
osascript. They are escaped with json.dumps, whose output is a valid AppleScript
string literal. A device name is attacker-controlled only by someone who can already
pair a device with your Mac.
In scope: anything that lets a non-root local process or a paired Bluetooth device cause
Oddpod to execute unintended code, write outside ~/.oddpod.json, or escalate
privileges.
Out of scope: missed or spurious notifications. Detection is heuristic by design — see "Known limits" in the README.