Skip to content
Tadoru
English
Esc
navigateopen⌘Jpreview
On this page

macOS permissions

The TCC permissions Tadoru uses, and how tadoru doctor diagnoses and guides you through granting them.

Tadoru never records your screen. Instead, depending on what you capture (the capture.sources setting), it uses up to three macOS permissions (TCC).

Required permissions

Permission System Settings item Used for Related event types
Accessibility Accessibility Window titles, focus, UI elements window.* ui.*
Input Monitoring Input Monitoring Detecting keys, scrolling, clicks input.* ui.click clipboard.*
Automation Automation (per target app) Reading the current URL and tab info from Chrome browser.navigate

Two important properties:

  • App launch, termination, and switching (app.*) require no permissions at all. Even with zero permissions granted, Tadoru works as an app-level activity history.
  • A permission is only “required” when a source that needs it is enabled. For example, with input removed from capture.sources, the diagnosis reports ok even if Input Monitoring is not granted.

Diagnose with doctor

tadoru doctor

Checks the granted state of each permission against your current configuration. If anything is missing, it explains what to grant and which System Settings pane to use, then exits with exit code 3.

tadoru doctor --fix

--fix opens the System Settings pane for each missing permission directly (the granting itself is always your action).

For agents and scripts: --json

tadoru doctor --json
{
  "ok": false,
  "capture_sources": ["app", "window", "ui", "input", "browser"],
  "permissions": {
    "accessibility":     { "status": "granted" },
    "input_monitoring":  { "status": "denied", "required_for": ["input.key", "input.scroll", "clipboard.copy", "clipboard.paste", "ui.click"] },
    "automation":        { "per_app": { "com.google.Chrome": "not_determined" } }
  },
  "missing_required": ["input_monitoring"],
  "settings_pane": "x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent"
}

status is one of granted / denied / not_determined. Because missing permissions are signaled with the dedicated exit code 3, agents and scripts can recognize “this is a permission problem” without parsing output (see exit codes).

Granting manually

Enable tadoru under System Settings → Privacy & Security:

Permission Location
Accessibility Privacy & Security → Accessibility
Input Monitoring Privacy & Security → Input Monitoring
Automation Privacy & Security → Automation (also confirmed via a dialog on the first Apple Event)

Permissions and code signing

macOS ties permissions to the code-signing identity of the executable. Release binaries are signed and notarized, giving them a stable signing identity — granted permissions survive upgrades even though the binary is replaced. Homebrew distribution is still in preparation; for now, Tadoru is installed by building from source (see the warning below).

What Tadoru will not do

  • It never grants permissions automatically or touches the TCC database (macOS makes this impossible by design). Tadoru’s scope is detection, guidance, and diagnosis only.
  • If start detects missing permissions, it refuses to start recording and exits with code 3 explaining what is missing. It never silently runs in a half-working state.

Was this page helpful?