Skip to content

Allowlist safety net + self-serve ActionKit import#2

Merged
jordankrueger merged 3 commits intomainfrom
feat/allowlist-and-self-serve
Apr 27, 2026
Merged

Allowlist safety net + self-serve ActionKit import#2
jordankrueger merged 3 commits intomainfrom
feat/allowlist-and-self-serve

Conversation

@jordankrueger
Copy link
Copy Markdown
Owner

Summary

Two pieces of pre-public hardening for the suppression list:

  1. Top-providers allowlist at sources/allowlist.txt (~37 major providers including privaterelay.appleid.com). build.py strips these from every data/*.txt output, with a belt-and-suspenders self-test that fails the build if any allowlist domain leaks through. Defends against upstream feed poisoning ever shipping a major provider as a "bad" domain.

  2. Self-serve ActionKit import — replaces "ask the Walkers" as the recommended bulk-import path. AK support confirmed /rest/v1/blackholeddomain/ is the supported endpoint; this PR ships the tooling so non-technical admins can use it without writing code.

    • scripts/import_to_actionkit.py — stdlib-only, idempotent. GETs existing list, diffs, POSTs only new domains.
    • .github/workflows/import-to-actionkit.ymlworkflow_dispatch trigger, secrets-driven, optional rebuild-first.
    • integrations/actionkit-self-serve.md — 10-min step-by-step guide for non-technical admins (fork → 3 secrets → click).
    • integrations/actionkit.md — rewritten to point at the self-serve guide as the primary path.

Test plan

  • python3 scripts/build.py runs cleanly with allowlist applied; output still ~66k domains; no major providers in data/combined.txt or data/typos.txt
  • Allowlist self-test fails the build if any allowlisted domain ends up in output (verified by code inspection — re-reads each output file and raises)
  • import_to_actionkit.py syntax valid; reads creds from env; bails with clear message if secrets missing
  • End-to-end test: fork the repo, add real AK secrets, run the workflow against a test or staging AK instance, verify domains land in Blackhole list
  • Decide whether to flip repo public after this PR merges

Notes

  • data/*.txt not committed in this PR — the nightly rebuild.yml action will regenerate them on the next run, picking up the allowlist filter then.
  • CLAUDE.md is gitignored (Claude Code working doc, not part of the public repo).

🤖 Generated with Claude Code

jordankrueger and others added 3 commits April 27, 2026 14:32
sources/allowlist.txt lists ~37 major email providers (Gmail, Outlook,
Yahoo, iCloud + privaterelay, AOL, Proton, GMX/Web.de, Orange/Laposte,
Mail.ru/Yandex, QQ/163, Naver/Hanmail, Rediffmail). build.py filters
these out of every data/*.txt output before writing, regardless of
upstream contents. A self-test re-reads each output and raises if any
allowlist domain leaked through, so a poisoned upstream feed cannot
silently ship a major provider as a "bad" domain.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces "ask the Walkers" as the recommended bulk-import path. AK
support confirmed /rest/v1/blackholeddomain/ as the supported endpoint;
this ships the tooling so non-technical admins can use it without
writing code.

- scripts/import_to_actionkit.py: stdlib-only, idempotent. GETs the
  existing list (paginated) then POSTs only new domains. Reads creds
  from AK_INSTANCE / AK_USERNAME / AK_PASSWORD env vars. Polite rate.
- .github/workflows/import-to-actionkit.yml: workflow_dispatch trigger,
  optional rebuild-first checkbox, secrets-driven, fails fast with a
  clear message if any required secret is missing.
- integrations/actionkit-self-serve.md: 10-minute step-by-step guide
  for non-technical admins. Fork → set 3 secrets → click Run workflow.
  Includes troubleshooting + privacy note.
- integrations/actionkit.md: rewritten to point at the self-serve guide
  as the recommended path. Local script remains for admins who'd
  rather not put credentials in GitHub.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Code Review (gpt-5.1-codex-mini)

No issues found.


Summary: No issues found. Code looks good.
Result: PASS

@jordankrueger jordankrueger merged commit b9c9d69 into main Apr 27, 2026
2 checks passed
@jordankrueger jordankrueger deleted the feat/allowlist-and-self-serve branch April 27, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants