Skip to content

HarmonicSecurity/openai-audit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ OPENAUDIT

Security audit tool for ChatGPT Desktop and Codex on macOS — including connectors, permissions, plugins, data controls, feature flags, telemetry, and enterprise configuration.

One command. Full visibility. Read-only.

OPENAUDIT terminal output

🤔 Why

ChatGPT has expanded from a single chat box into a sprawling product family — core chat, custom GPTs, connected apps (connectors), Codex for autonomous coding, Agent mode for browser automation, and Atlas as a full AI-native browser. Each surface carries distinct risk, and the security controls available differ meaningfully across them.

Most of this configuration lives in plist files, TOML configs, Statsig analytics caches, and WebKit storage scattered across multiple directories with no centralised visibility. Your security team can't govern what they can't see.

OPENAUDIT gives you that visibility in a single command.

📝 What's covered: OPENAUDIT audits both ChatGPT Desktop (com.openai.chat) and Codex (com.openai.codex) — the desktop app and CLI. It inspects local configuration, cached workspace settings, permissions, connectors, plugins, data controls, feature flags, telemetry, and runtime state. It also provides a checklist of admin console settings that can only be verified server-side.

📋 What It Audits

Area What's Checked
🖥️ ChatGPT Desktop App version, Sparkle auto-update, conversation metadata (count/size, not content), custom GPTs (gizmos), WebKit/cookie/cache inventory
⚙️ Codex Configuration sandbox_mode, approval_policy, shell_environment_policy, analytics, history persistence, network access, AGENTS.md custom instructions
🔐 Codex Auth auth.json permissions (WARN if not 0600), credential store type (file vs keychain), Keychain entries
🏢 Codex Enterprise requirements.toml (with MCP allowlist, allowed sandbox/approval/web-search modes), managed_config.toml, MDM profiles, cloud-managed requirements
📊 Data Controls Training opt-out status, workspace type (personal vs Team/Enterprise), admin-controlled toggle detection, data residency
🔑 Account Permissions 54+ workspace permissions with 13 dangerous patterns flagged (MCP, agent-mode, code-execution, memory, device-code-auth, admin, etc.)
🔗 Connectors Available connectors (Slack, GitHub, Google Drive, Outlook, MCP, etc.) from Statsig analytics cache
🛠️ System Tools Tool inventory with type, dangerous status, and required feature flags
🚩 Feature Flags Persistent memory, voice mode, search, app pairing, screen sharing, and 13+ flags from Statsig
🕵️ PII Exposure User IDs, Statsig SDK keys, email addresses found in plaintext local storage (redacted in output)
📡 Telemetry & Analytics Sentry crash reporting (both apps), Statsig analytics (gate count), SDK key exposure, Sparkle auto-update
🧩 Codex Plugins Installed plugins with version, source marketplace, skill count, plus deep scan of skills and connectors per plugin
🪝 Codex Hooks Hook events (PreToolUse, PostToolUse, SessionStart, etc.) and shell commands
🎯 Codex Skills Skill names and descriptions from SKILL.md frontmatter
📏 Codex Rules Starlark .rules files with prefix_rule() patterns and decisions (allow/prompt/forbidden)
🏃 Runtime State Running processes, sleep assertions, LaunchAgents, crontab entries, log/SQLite sizes, OPENAI_API_KEY in environment
🍪 Cookies Cookie stores for both ChatGPT and Codex
Admin Console Checklist 19-item checklist of server-side settings that cannot be audited from the endpoint

⚡ Getting Started

Prerequisites

Requirement How to check How to install
🍎 macOS You're on a Mac
🐚 zsh zsh --version Ships with macOS since Catalina
🔧 jq jq --version brew install jq

Install & Run

git clone https://github.com/HarmonicSecurity/openai-audit.git
cd openai-audit
chmod +x openai_audit.sh
./openai_audit.sh

That's it. The script reads your ChatGPT and Codex configuration and prints a colour-coded report to the terminal. It never modifies anything.

🎛️ Usage

./openai_audit.sh [OPTIONS]

Options:
  --html [FILE]    Generate a standalone HTML report
  --json           Output structured JSON
  --user USER      Audit a specific user
  --all-users      Audit all users with ChatGPT/Codex data (requires root)
  -q, --quiet      Only show WARN and REVIEW findings
  --version        Print version and exit
  -h, --help       Show usage

Examples

# Default: colour output in terminal
./openai_audit.sh

# Only warnings and critical findings
./openai_audit.sh -q

# Standalone HTML report
./openai_audit.sh --html

# JSON for SIEM ingestion
./openai_audit.sh --json > audit.json

# Specific user
./openai_audit.sh --user jsmith

# All users (run as root via MDM, FleetDM, Jamf, etc.)
sudo ./openai_audit.sh

💡 When run as root (uid 0), the script automatically discovers and scans all users with ChatGPT or Codex data. No flags needed.

📊 Output Formats

🖥️ Terminal (default)

Colour-coded output with Unicode tables and severity indicators.

OPENAUDIT terminal output

🌐 HTML (--html)

Standalone dark-themed report with collapsible sections. Created with restrictive file permissions (0600).

OPENAUDIT HTML report

📄 JSON (--json)

Structured output for SIEM ingestion. Sensitive fields (API keys, tokens, secrets, PII) are automatically redacted. Multi-user scans produce a JSON array. Includes an admin_checklist array of server-side settings to verify manually.

🚨 Severity Levels

Severity Meaning
🟠 WARN Increases risk surface — e.g. dangerous permissions, training enabled, plaintext SDK keys
🟡 REVIEW Needs human judgement — e.g. installed plugins, cached connectors
🔵 INFO Informational — e.g. app versions, config values, permission counts

✅ Admin Console Checklist

Some security-critical settings can only be verified through the ChatGPT admin console or API Platform — they have no local file representation. OPENAUDIT includes a checklist of these settings in every report:

ChatGPT Workspace (chatgpt.com/admin) — Chat retention policy, memory workspace toggle, Agent mode / Web search / Deep research toggles, Code on macOS, Apple Intelligence linking, GPT publishing, third-party GPTs, per-app RBAC and action risk labels, action confirmation, domain verification, SCIM sync, IP allowlisting.

Codex Admin — Device code authentication (phishing risk), Codex Cloud connectors (GitHub/Slack/Linear).

API Platform (platform.openai.com) — Audit logging (disabled by default, cannot be re-disabled), hosted tools (MCP, web search, file search), data sharing toggles, API IP allowlist.

🔒 Security Properties

  • Read-only — never writes to, modifies, or deletes any audited file
  • No network access — all data collected from local filesystem and system commands
  • Sensitive data redacted — tokens, keys, PII, and secrets replaced with [REDACTED] in all output formats
  • Minimal privileges — runs as current user; root only needed for multi-user scans
  • Single file — no dependencies beyond jq
  • Auditable — the entire tool is one readable shell script

💜 Built with Claude Code

This project is built and maintained using Claude Code. We love it. Seriously. If you're building developer tools and haven't tried it yet, you're missing out.

📄 License

Apache License 2.0 — see LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages