This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow-steward.git


The following commit(s) were added to refs/heads/main by this push:
     new d65cd69  chore(settings): allowlist read-only Gmail / Ponymail MCP + 
zizmor (#365)
d65cd69 is described below

commit d65cd69d99d0c32fa11a2ca0a4193898695dd559
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu May 28 22:28:33 2026 +0200

    chore(settings): allowlist read-only Gmail / Ponymail MCP + zizmor (#365)
    
    Add eight read-only patterns to `.claude/settings.json`
    `permissions.allow` (and mirror in `tools/sandbox-lint/expected.json`
    to keep the baseline in lockstep) so the most common prompts during
    security-mailbox sweeps and CI lint passes go away.
    
    == Added ==
    
    - `mcp__claude_ai_Gmail__get_thread`        — read Gmail thread by ID
    - `mcp__claude_ai_Gmail__search_threads`    — search Gmail by query
    - `mcp__ponymail__search_list`              — search public ASF 
mailing-list archive
    - `mcp__ponymail__auth_status`              — ponymail auth probe
    - `mcp__ponymail__get_thread`               — read ponymail thread
    - `mcp__ponymail__get_email`                — read individual ponymail 
message
    - `mcp__ponymail__list_restrictions`        — read access restriction list
    - `Bash(zizmor *)`                          — GitHub Actions security 
linter (read-only scan)
    
    == Frequency basis ==
    
    Picked from a 50-transcript scan (4786 Bash calls, 353 MCP calls):
    
      107 mcp__claude_ai_Gmail__get_thread
       48 mcp__claude_ai_Gmail__search_threads
       47 mcp__ponymail__search_list
       15 mcp__ponymail__auth_status
        8 mcp__ponymail__get_thread
        4 mcp__ponymail__get_email
        3 mcp__ponymail__list_restrictions
        4 Bash(zizmor *)
    
    == Deliberately NOT added ==
    
    - `Bash(prek run *)` — runs hooks that include formatters (ruff
      format, doctoc) that mutate files.
    - `Bash(breeze run *)` / `Bash(breeze release-management *)` —
      Airflow CI/build tooling, mutates.
    - `Bash(for *)` / `Bash(until *)` family — shell loops are
      arbitrary-code-execution wildcards; never safe to allowlist.
    - `Bash(mkdir *)` / `Bash(chmod *)` / `Bash(ln *)` — filesystem
      writes.
    - `Bash(awk *)` / `Bash(open *)` / `Bash(magick *)` — pattern
      doesn't distinguish reads from writes.
    - All git / gh / cat / ls / grep / rg / find / etc. — already
      auto-allowed by Claude Code with no rule needed.
    
    == Verification ==
    
    sandbox-lint pytest passes (50/50) — the baseline and live
    `.claude/settings.json` agree.
    
    Generated-by: Claude Code (Opus 4.7)
---
 .claude/settings.json            | 10 +++++++++-
 tools/sandbox-lint/expected.json | 10 +++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/.claude/settings.json b/.claude/settings.json
index 592b7b9..fdd3930 100644
--- a/.claude/settings.json
+++ b/.claude/settings.json
@@ -45,7 +45,15 @@
   },
   "permissions": {
     "allow": [
-      "Bash(gh api graphql *)"
+      "Bash(gh api graphql *)",
+      "mcp__claude_ai_Gmail__get_thread",
+      "mcp__claude_ai_Gmail__search_threads",
+      "mcp__ponymail__search_list",
+      "mcp__ponymail__auth_status",
+      "mcp__ponymail__get_thread",
+      "mcp__ponymail__get_email",
+      "mcp__ponymail__list_restrictions",
+      "Bash(zizmor *)"
     ],
     "deny": [
       "Read(~/.aws/**)",
diff --git a/tools/sandbox-lint/expected.json b/tools/sandbox-lint/expected.json
index 592b7b9..fdd3930 100644
--- a/tools/sandbox-lint/expected.json
+++ b/tools/sandbox-lint/expected.json
@@ -45,7 +45,15 @@
   },
   "permissions": {
     "allow": [
-      "Bash(gh api graphql *)"
+      "Bash(gh api graphql *)",
+      "mcp__claude_ai_Gmail__get_thread",
+      "mcp__claude_ai_Gmail__search_threads",
+      "mcp__ponymail__search_list",
+      "mcp__ponymail__auth_status",
+      "mcp__ponymail__get_thread",
+      "mcp__ponymail__get_email",
+      "mcp__ponymail__list_restrictions",
+      "Bash(zizmor *)"
     ],
     "deny": [
       "Read(~/.aws/**)",

Reply via email to