googleworkspace/cli
Google Workspace CLI — one command-line tool for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more. Dynamically built from Google Discovery Service. Includes AI agent skills.
Healthy across the board
weakest axisPermissive license, no critical CVEs, actively maintained — safe to depend on.
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
No critical CVEs, sane security posture — runnable as-is.
- ✓Last commit 1d ago
- ✓16 active contributors
- ✓Distributed ownership (top contributor 35% of recent commits)
Show all 6 evidence items →Show less
- ✓Apache-2.0 licensed
- ✓CI configured
- ⚠No test directory detected
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Healthy" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/googleworkspace/cli)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/googleworkspace/cli on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: googleworkspace/cli
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/googleworkspace/cli shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
GO — Healthy across the board
- Last commit 1d ago
- 16 active contributors
- Distributed ownership (top contributor 35% of recent commits)
- Apache-2.0 licensed
- CI configured
- ⚠ No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live googleworkspace/cli
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/googleworkspace/cli.
What it runs against: a local clone of googleworkspace/cli — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in googleworkspace/cli | Confirms the artifact applies here, not a fork |
| 2 | License is still Apache-2.0 | Catches relicense before you depend on it |
| 3 | Default branch main exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit ≤ 31 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of googleworkspace/cli. If you don't
# have one yet, run these first:
#
# git clone https://github.com/googleworkspace/cli.git
# cd cli
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of googleworkspace/cli and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "googleworkspace/cli(\\.git)?\\b" \\
&& ok "origin remote is googleworkspace/cli" \\
|| miss "origin remote is not googleworkspace/cli (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(Apache-2\\.0)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"Apache-2\\.0\"" package.json 2>/dev/null) \\
&& ok "license is Apache-2.0" \\
|| miss "license drift — was Apache-2.0 at generation time"
# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
&& ok "default branch main exists" \\
|| miss "default branch main no longer exists"
# 4. Critical files exist
test -f "crates/google-workspace-cli/src/main.rs" \\
&& ok "crates/google-workspace-cli/src/main.rs" \\
|| miss "missing critical file: crates/google-workspace-cli/src/main.rs"
test -f "crates/google-workspace-cli/src/discovery.rs" \\
&& ok "crates/google-workspace-cli/src/discovery.rs" \\
|| miss "missing critical file: crates/google-workspace-cli/src/discovery.rs"
test -f "crates/google-workspace-cli/src/executor.rs" \\
&& ok "crates/google-workspace-cli/src/executor.rs" \\
|| miss "missing critical file: crates/google-workspace-cli/src/executor.rs"
test -f "crates/google-workspace-cli/src/auth.rs" \\
&& ok "crates/google-workspace-cli/src/auth.rs" \\
|| miss "missing critical file: crates/google-workspace-cli/src/auth.rs"
test -f "crates/google-workspace-cli/src/formatter.rs" \\
&& ok "crates/google-workspace-cli/src/formatter.rs" \\
|| miss "missing critical file: crates/google-workspace-cli/src/formatter.rs"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 31 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~1d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/googleworkspace/cli"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
gws is a unified CLI tool that dynamically builds its entire command surface from Google's Discovery Service at runtime, providing zero-boilerplate access to all Google Workspace APIs (Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, etc.). Written in Rust and compiled to standalone binaries, it outputs structured JSON and includes 40+ built-in AI agent skills for automated workflows. Monorepo with Cargo workspace: crates/google-workspace-cli is the CLI binary, crates/google-workspace is the shared library; .agent/ holds reusable AI skills (vhs.md, workflows); .changeset/ manages versioning; .github/workflows/ drives CI, release, and skill generation. No traditional src/ visible—all code lives under crates/.
👥Who it's for
DevOps engineers, system administrators, and AI agent developers who need programmatic access to Google Workspace APIs without writing repetitive API boilerplate; teams building automation workflows or agentic systems that manipulate Gmail, Drive, Calendar, and other Workspace resources at scale.
🌱Maturity & risk
Actively developed but pre-v1.0 (expect breaking changes per IMPORTANT notice in README). Has CI/CD pipelines (ci.yml, coverage.yml, release.yml), changesets for versioning (.changeset/), and GitHub Actions automation. Published to both npm (@googleworkspace/cli) and as compiled Rust binaries. Not yet battle-tested in production at scale, but well-engineered with test infrastructure in place.
Pre-v1.0 means the API surface is unstable; breaking changes are explicitly expected. Rust codebase reduces runtime dependency bloat (main risk is compilation/toolchain issues), but relies entirely on Google's Discovery Service remaining stable and available. Single workspace owner (Google) mitigates abandonment risk, but lack of public issue/discussion activity makes feature velocity unclear. No explicit open-source license detail visible beyond 'Apache 2.0' header.
Active areas of work
Active skill generation and verification (generate-skills.yml, publish-skills.yml workflows). Recent changesets indicate work on Sheets operations (.changeset/sheets-append-range.md). Labeler and policy automation in place. No visible recent commit metadata, but CI/CD is comprehensive and regularly triggered.
🚀Get running
git clone https://github.com/googleworkspace/cli.git
cd cli
cargo build --release
# OR: npm install -g @googleworkspace/cli
# OR: download pre-built binary from https://github.com/googleworkspace/cli/releases
Daily commands:
cargo build
cargo run -- auth setup
cargo run -- drive files list
cargo run -- gmail messages list --format json
For npm: gws auth setup, then gws <service> <resource> <method>. Pre-built binaries available from GitHub Releases.
🗺️Map of the codebase
crates/google-workspace-cli/src/main.rs— Entry point for the CLI application; orchestrates command parsing, authentication, and service routing for all Google Workspace APIs.crates/google-workspace-cli/src/discovery.rs— Fetches and parses Google's Discovery Service to dynamically generate CLI commands; core abstraction enabling zero-boilerplate API access.crates/google-workspace-cli/src/executor.rs— Executes discovered commands and handles request/response transformation; bridges dynamic API definitions to actual HTTP calls.crates/google-workspace-cli/src/auth.rs— OAuth 2.0 authentication flow and token management; required for all API interactions.crates/google-workspace-cli/src/formatter.rs— Converts API responses to structured JSON output; ensures consistent output format across all services.crates/google-workspace-cli/src/helpers/mod.rs— Aggregates service-specific helpers (Gmail, Sheets, Calendar, Drive); implements AI agent skills and custom business logic.crates/google-workspace-cli/src/commands.rs— Command-line interface definition and routing logic; maps user input to executor and helper functions.
🛠️How to make changes
Add a new service-specific helper
- Create a new helper module at crates/google-workspace-cli/src/helpers/SERVICENAME.rs with custom business logic (e.g., batch operations, formatting). (
crates/google-workspace-cli/src/helpers/SERVICENAME.rs) - Re-export the helper in crates/google-workspace-cli/src/helpers/mod.rs and add a pub use statement. (
crates/google-workspace-cli/src/helpers/mod.rs) - Add a new match arm in crates/google-workspace-cli/src/executor.rs to route commands to your helper when service matches. (
crates/google-workspace-cli/src/executor.rs) - Test the helper by running
cargo buildand invoking the CLI with the new service name. (crates/google-workspace-cli/src/main.rs)
Add a new Gmail-specific command (e.g., archive emails)
- Implement the business logic function in crates/google-workspace-cli/src/helpers/gmail/mod.rs (or a submodule like archive.rs). (
crates/google-workspace-cli/src/helpers/gmail/mod.rs) - Update the Gmail command handler in crates/google-workspace-cli/src/executor.rs to call your new function when a matching command is detected. (
crates/google-workspace-cli/src/executor.rs) - Add integration tests in a test module and validate with
cargo test. (crates/google-workspace-cli/src/helpers/gmail/mod.rs)
Add a new AI agent skill
- Create a markdown file describing the skill in .agent/skills/SKILLNAME.md with action name, parameters, and examples. (
.agent/skills/SKILLNAME.md) - Implement the skill's handler logic in crates/google-workspace-cli/src/helpers/SERVICENAME.rs or add a workflow in .agent/workflows/. (
crates/google-workspace-cli/src/helpers/SERVICENAME.rs) - Test the skill by invoking it via the CLI and verify the workflow in .agent/workflows/verify-skills.md. (
.agent/workflows/verify-skills.md)
Add support for a new output format
- Extend the Format enum and match logic in crates/google-workspace-cli/src/formatter.rs to handle the new format (e.g., YAML, CSV). (
crates/google-workspace-cli/src/formatter.rs) - Add command-line flag parsing for the new format in crates/google-workspace-cli/src/commands.rs. (
crates/google-workspace-cli/src/commands.rs) - Test the formatter with
cargo testand validate output against your new format schema. (crates/google-workspace-cli/src/formatter.rs)
🔧Why these technologies
- Rust — Provides memory safety, fast execution, and zero-cost abstractions for building a performant CLI tool that handles many concurrent API requests.
- Google Discovery Service — Eliminates need for hardcoded API schemas; enables automatic support for new Google APIs as they are released or updated.
- OAuth 2.0 with token caching — Securely authenticates with Google APIs while minimizing token refresh calls through persistent local storage.
- Structured JSON output — Ensures machine-parseable responses for pipeline integration and AI agent consumption; contrasts with unstructured CLI tools.
- Workspace monorepo (Cargo workspace) — Separates CLI implementation (google-workspace-cli) from core library (google-workspace), allowing library reuse in other contexts.
⚖️Trade-offs already made
-
Dynamic command generation from Discovery Service vs. static command definitions
- Why: Removes maintenance burden of hardcoding every Google API method; automatically picks up new APIs.
- Consequence: Slightly higher latency on first run (Discovery Service fetch), but vastly easier to maintain and extend.
-
Single monolithic CLI binary vs. plugins
- Why: Simpler distribution and installation; all features available out-of-the-box.
- Consequence: Larger binary size; no third-party plugin ecosystem, but cleaner user experience.
-
Helpers for common operations (Gmail send, Sheets append) vs. pure Discovery-based execution
- Why: Helpers provide optimized, user-friendly workflows for frequent tasks (e.g., send email with attachments).
- Consequence: undefined
🪤Traps & gotchas
Discovery Service dependency: entire CLI is generated at runtime from Google's OpenAPI discovery endpoint; if that service is down or changes schema, gws may fail to initialize. Auth setup required: .env.example and .claude/settings.json + .gemini/config.yaml suggest environment-specific config; gws auth setup must complete before most commands work. Changeset discipline: changesets are not optional—CI likely fails PRs without a .changeset/*.md file. Cargo workspace members: both crates/ must compile; single broken member blocks all builds. Nix flake: alternative installation path; may have dependency drift if nixpkgs is stale.
🏗️Architecture
💡Concepts to learn
- Google Discovery Service — gws's entire command surface is generated dynamically by querying this service at runtime; understanding how it works explains why gws supports all Workspace APIs without hardcoding them
- OpenAPI / JSON Discovery Schema — Discovery Service returns OpenAPI schemas; gws parses these to auto-generate Rust bindings for every Google API method and parameter
- Agent Skills & Tool Use — 40+ pre-built skills (.agent/skills/) allow AI agents (Claude, Gemini) to call gws commands as tools; core value proposition for agentic automation
- OAuth 2.0 Device Flow — gws auth setup likely uses device flow (browser-less auth for CLI); understanding this flow is critical for headless/CI deployments
- Semantic Versioning with Changesets — gws enforces .changeset/ files on every PR to automate versioning; required workflow discipline for contributors
- Rust Monorepo Workspace — crates/google-workspace and crates/google-workspace-cli share code via Cargo workspace; understanding workspace member dependencies is key to modifying either crate
- Structured Logging & JSON Output — gws enforces --format json for all outputs; critical for shell scripting, CI/CD pipelines, and agentic parsing of results
🔗Related repos
googleapis/google-api-ruby-client— Dynamic API client library for Ruby; similar pattern of generating bindings from Discovery Service, useful reference for API surface generationgapi-scripts/gws-scripts— Community scripts for Google Workspace automation; likely examples of gws in action with agent workflowsgoogle-github-actions/setup-gcloud— Google Cloud SDK setup action; gws often runs alongside gcloud for auth & GCP project setup (see CONTEXT.md reference to gcloud CLI)langchain-ai/langchain— AI agent framework; gws agent skills are designed to integrate with LangChain-compatible tool definitions for agentic workflowsanthropics/anthropic-sdk-python— Claude SDK for agent building; .claude/settings.json and CLAUDE.md suggest gws is a tool for Claude agents to call
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add integration tests for discovery.rs API schema parsing
The discovery.rs module dynamically builds commands from Google Discovery Service, but there are no visible integration tests validating schema parsing, command generation, or error handling for malformed schemas. This is critical since the entire CLI's API coverage depends on this module working correctly across all Workspace services (Drive, Gmail, Calendar, Sheets, etc.).
- [ ] Create crates/google-workspace-cli/tests/discovery_integration_test.rs
- [ ] Add test cases for parsing real Discovery Service schemas (at least Drive, Gmail, Calendar)
- [ ] Test edge cases: missing required fields, schema version mismatches, deprecated APIs
- [ ] Validate that generated commands match expected structure and parameters
- [ ] Add CI workflow step in .github/workflows/ci.yml to run integration tests
Add missing unit tests for credential_store.rs and auth.rs
Authentication and credential management are security-critical paths. The src/auth.rs and src/credential_store.rs files handle token storage, refresh, and credential validation, but no visible test files exist. This creates risk for credential leaks, token expiry bugs, and auth state inconsistencies.
- [ ] Create crates/google-workspace-cli/tests/auth_test.rs with tests for: token refresh logic, expired token detection, OAuth flow validation
- [ ] Create crates/google-workspace-cli/tests/credential_store_test.rs covering: encryption/decryption, credential persistence, concurrent access
- [ ] Add test fixtures for mock Google OAuth responses and credential files
- [ ] Update crates/google-workspace-cli/Cargo.toml to include test dependencies (mockito, tempfile)
- [ ] Add coverage reporting in .github/workflows/coverage.yml for auth-related code paths
Document and test the AI agent skills system with concrete examples
The repo includes 40+ agent skills (.agent/skills/vhs.md) and a skill generation workflow (.github/workflows/generate-skills.yml), but there's no documentation mapping these skills to CLI commands or showing how AI agents should invoke them. AGENTS.md exists but appears to lack concrete examples.
- [ ] Expand AGENTS.md with 5-10 concrete agent skill examples (e.g., 'How to use the sheets-append-range skill with a specific CLI invocation')
- [ ] Create .agent/SKILL_REFERENCE.md cataloging all 40+ skills with: function signature, parameters, example invocations, expected outputs
- [ ] Add integration test in .github/workflows/generate-skills.yml to validate skill schema consistency
- [ ] Add test cases in crates/google-workspace-cli/tests/ verifying generated skills match documented interfaces
- [ ] Link skill documentation from README.md in the 'Features' or 'Agent Skills' section
🌿Good first issues
- Add structured error codes and exit code documentation: README mentions 'Exit Codes' section but .github/workflows/ci.yml and src/ don't show explicit error code enums; define and document all possible exit codes (e.g., 1=auth failed, 2=API error, 3=invalid input): Improves scripting reliability and UX; currently undocumented and scattered across crates/
- Write integration tests for 3-5 core Workspace services: crates/google-workspace-cli/ likely has no tests for end-to-end flows (auth → drive list → parse JSON); add tests that mock Discovery Service responses and verify CLI output formatting: Coverage is incomplete; .github/workflows/coverage.yml exists but tests probably don't cover actual command execution paths
- Document skill authoring guide: .agent/skills/vhs.md exists as example, but no README explaining skill schema, required fields, or CLI registration; create .agent/SKILL_AUTHORING.md with minimal working example and schema docs: Skills are a core feature but completely undocumented; blocks external contributors from building custom agents
⭐Top contributors
Click to expand
Top contributors
- [@Justin Poehnelt](https://github.com/Justin Poehnelt) — 35 commits
- @googleworkspace-bot — 27 commits
- @anshul-garg27 — 10 commits
- @github-actions[bot] — 7 commits
- @malob — 5 commits
📝Recent commits
Click to expand
Recent commits
a3768d0— feat(sheets): add --range flag to +append for targeting specific tabs (#641) (YunChaoTsai)705fb0e— chore: release versions (#655) (googleworkspace-bot)b307856— refactor: drop serde_yaml by migrating to toml (#657) (Justin Poehnelt)503315b— docs: update installation instructions to prioritize github releases (#656) (Justin Poehnelt)ecddf2e— ci: add cargo-deny for license, advisory, and source auditing (#653) (Justin Poehnelt)6ccbb42— fix: auto-install binary on run if missing (#654) (Justin Poehnelt)5d24ac2— ci: add cargo-audit workflow for dependency vulnerability scanning (#649) (Justin Poehnelt)158f93a— fix: verify SHA256 checksum in npm postinstall script (#650) (Justin Poehnelt)b422e5d— ci: pin cross-rs to v0.2.5 in release workflow (#651) (Justin Poehnelt)f4ee658— chore: release versions (#647) (googleworkspace-bot)
🔒Security observations
The Google Workspace CLI demonstrates a generally reasonable security posture with proper use of OAuth2, configuration externalization, and modular architecture. However, several areas require attention: (1) credential storage mechanisms need verification that they use OS-level secure storage, (2) the direct token environment variable feature creates exposure risks and requires stronger safeguards, (3)
- Medium · Incomplete Security Configuration in .env.example —
.env.example. The .env.example file contains a truncated comment about 'Sanitizatio' (likely 'Sanitization') at the end of the Model Armor section, suggesting incomplete documentation. While not a direct vulnerability, incomplete security configuration documentation could lead to misconfiguration by users. Fix: Complete the documentation for the GOOGLE_WORKSPACE_CLI_SANITIZE_TEMPLATE variable and add clear examples of proper configuration. Ensure all security-relevant environment variables have complete documentation. - Medium · Potential Sensitive Data Exposure in Credential Store —
crates/google-workspace-cli/src/credential_store.rs, crates/google-workspace-cli/src/auth.rs. The presence of credential_store.rs and auth.rs modules suggests the CLI stores authentication credentials locally. Without visible encryption or secure storage implementation details, there is a risk of plaintext or inadequately protected credentials being stored on disk. Fix: Verify that all stored credentials use OS-level secure storage (e.g., macOS Keychain, Windows Credential Manager, Linux Secret Service). Implement encryption at rest for any cached tokens. Add security tests to ensure no plaintext credentials are written to disk. - Medium · OAuth Token Handling via Environment Variable —
.env.example. The GOOGLE_WORKSPACE_CLI_TOKEN environment variable allows passing access tokens directly, marked as 'highest priority'. This bypasses standard OAuth flows and increases risk of token exposure via process inspection, shell history, or log files. Fix: Document the security implications of using GOOGLE_WORKSPACE_CLI_TOKEN. Recommend using OAuth credential files instead. If this feature must exist, add warnings about shell history, process inspection, and audit logging. Consider requiring explicit --allow-token-env flag. - Medium · Discovery Service Dynamic Command Generation —
crates/google-workspace-cli/src/discovery.rs. The discovery.rs module suggests dynamic API command generation from Google Discovery Service. While flexible, this could expose vulnerabilities if the Discovery Service is compromised or if user input is not properly sanitized during command construction. Fix: Implement strict validation and allowlisting of discovered APIs and methods. Add code signing verification for discovery responses. Implement rate limiting and caching to reduce attack surface. Add security warnings in documentation about trusting discovery service responses. - Low · Helpers Module Lacks Visible Input Validation —
crates/google-workspace-cli/src/helpers/. Multiple helper modules (gmail, sheets, calendar, docs, drive, chat) are present but their input validation mechanisms are not immediately visible from the file structure. This could indicate potential command injection or parameter tampering vulnerabilities. Fix: Conduct a thorough code review of each helper module focusing on input validation. Ensure all user-provided parameters are validated against expected types and formats. Implement parameterized APIs rather than string concatenation for request building. - Low · Model Armor Sanitization Feature Lacks Clear Documentation —
.env.example, crates/google-workspace-cli/src/helpers/modelarmor.rs. The Model Armor response sanitization feature (mentioned in .env.example and .gemini/) appears to be related to sensitive data handling, but security implications and default behavior are unclear from visible files. Fix: Document the Model Armor sanitization feature's security model, including what patterns it matches, false positive rates, and limitations. Provide security warnings about relying on sanitization as a primary security control. Add unit tests demonstrating its effectiveness. - Low · Unclear Event Subscription Security Model —
crates/google-workspace-cli/src/helpers/events/subscribe.rs. The helpers/events/subscribe.rs module suggests webhook-based event subscriptions, which typically involve network callbacks. The security model for validating webhook authenticity and preventing replay attacks is not visible. Fix: Implement and document webhook signature verification using Google's standard webhook authentication. Add timestamp validation to prevent replay attacks. Document how to configure firewall rules and allowlists for webhook endpoints.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.