You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,17 @@
1
-
we don# Changelog
1
+
# Changelog
2
2
3
3
All notable changes to this project will be documented in this file.
4
4
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
6
6
7
7
## [Unreleased]
8
8
9
+
### Added
10
+
11
+
-`docs/private-repo.md` — "Protecting secrets in your overlay" section covering GitHub push protection (server-side block that survives `--no-verify`), a gitleaks pre-commit hook, and a one-time trufflehog history sweep. Aimed at overlay maintainers whose configs reference Slack tokens, LLM API keys, and OAuth client secrets via `{ENV_VAR}` placeholders.
12
+
-`slack-agents init` now prints a visible "SECURITY: protect your secrets before pushing" banner at the end of scaffolding, linking to the new docs section.
13
+
-`SECURITY.md` — pointer for overlay maintainers to the overlay security guidance.
14
+
9
15
## [0.8.1] - 2026-05-07
10
16
11
17
### Fixed
@@ -101,15 +107,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
101
107
102
108
### Added
103
109
104
-
-`slack-agents init` now generates `.gitignore`
110
+
-`slack-agents init` now generates `.gitignore`
105
111
-`.env.example` template includes comments explaining where to get each token and links to setup guide
106
112
-`build-docker` lists required environment variables after build completes
107
113
-`build-docker` errors if `req*.txt` files are found (dependencies must be in `pyproject.toml`)
108
114
-`init` warns when `req*.txt` files are found with migration instructions
109
115
110
116
### Changed
111
117
112
-
-`pyproject.toml` template uses `python-slack-agents<2` (no minimum pin)
118
+
-`pyproject.toml` template uses `python-slack-agents<2` (no minimum pin)
Do **not** open public issues for security concerns.
8
8
9
9
We will acknowledge reports within 72 hours and aim to release fixes promptly.
10
+
11
+
## For overlay maintainers
12
+
13
+
If you operate an overlay repository (your own `agents/`, `src/`, and configs built on top of this framework), see [Protecting secrets in your overlay](docs/private-repo.md#protecting-secrets-in-your-overlay) for the recommended setup: GitHub push protection, a gitleaks pre-commit hook, and a one-time trufflehog history sweep.
Overlay configs reference secrets via `{ENV_VAR}` placeholders — Slack tokens, LLM API keys, and OAuth client secrets. The scaffolded `.gitignore` keeps `.env` out of git, but that's a single layer. A few minutes of setup adds defense in depth.
86
+
87
+
### 1. Enable GitHub push protection
88
+
89
+
GitHub refuses pushes that contain known provider tokens (Slack `xoxb-`/`xapp-`, Anthropic `sk-ant-`, OpenAI `sk-`, AWS, etc.) before they ever reach the remote. It cannot be bypassed by `git commit --no-verify` — the check runs server-side. Free on public repos, and included in GitHub Advanced Security on private/organisation repos.
90
+
91
+
Toggle it in **Settings → Code security → Secret scanning** (enable both *Secret scanning* and *Push protection*), or in one shot via the CLI:
92
+
93
+
```bash
94
+
gh api -X PATCH repos/<org>/<repo> --input - <<'EOF'
Catches secrets on the developer's machine before they ever reach a remote — useful as a first line of defense and as the only layer for contributors who fork the repo. Add to your overlay's `.pre-commit-config.yaml`:
108
+
109
+
```yaml
110
+
repos:
111
+
- repo: https://github.com/gitleaks/gitleaks
112
+
rev: v8.30.1 # pin to a tag; bump via `pre-commit autoupdate`
113
+
hooks:
114
+
- id: gitleaks
115
+
```
116
+
117
+
Then run `pre-commit install` once per clone. Pre-commit requires a pinned `rev` for reproducibility and supply-chain safety. Keep it fresh either by running `pre-commit autoupdate` periodically or by adding a `package-ecosystem: "pre-commit"` entry to `.github/dependabot.yml` so Dependabot opens hook-bump PRs.
118
+
119
+
### 3. Sweep history once
120
+
121
+
Before turning the layers above on, check whether anything already leaked. Trufflehog walks every commit in your history and reports candidate secrets:
122
+
123
+
```bash
124
+
docker run --rm -v "$PWD:/repo" trufflesecurity/trufflehog:latest \
125
+
git file:///repo --no-update
126
+
```
127
+
128
+
If trufflehog finds a real secret, **rotate it immediately** at the issuer (Slack, Anthropic, OpenAI, etc.). Rewriting git history with `git-filter-repo` is optional — once a token has been pushed publicly, assume it's compromised and prioritise rotation over removal.
Overlay configs reference secrets via `{ENV_VAR}` placeholders — Slack tokens, LLM API keys, and OAuth client secrets. The scaffolded `.gitignore` keeps `.env` out of git, but that's a single layer. A few minutes of setup adds defense in depth.
1316
+
1317
+
### 1. Enable GitHub push protection
1318
+
1319
+
GitHub refuses pushes that contain known provider tokens (Slack `xoxb-`/`xapp-`, Anthropic `sk-ant-`, OpenAI `sk-`, AWS, etc.) before they ever reach the remote. It cannot be bypassed by `git commit --no-verify` — the check runs server-side. Free on public repos, and included in GitHub Advanced Security on private/organisation repos.
1320
+
1321
+
Toggle it in **Settings → Code security → Secret scanning** (enable both *Secret scanning* and *Push protection*), or in one shot via the CLI:
1322
+
1323
+
```bash
1324
+
gh api -X PATCH repos/<org>/<repo> --input - <<'EOF'
Catches secrets on the developer's machine before they ever reach a remote — useful as a first line of defense and as the only layer for contributors who fork the repo. Add to your overlay's `.pre-commit-config.yaml`:
1338
+
1339
+
```yaml
1340
+
repos:
1341
+
- repo: https://github.com/gitleaks/gitleaks
1342
+
rev: v8.30.1 # pin to a tag; bump via `pre-commit autoupdate`
1343
+
hooks:
1344
+
- id: gitleaks
1345
+
```
1346
+
1347
+
Then run `pre-commit install` once per clone. Pre-commit requires a pinned `rev` for reproducibility and supply-chain safety. Keep it fresh either by running `pre-commit autoupdate` periodically or by adding a `package-ecosystem: "pre-commit"` entry to `.github/dependabot.yml` so Dependabot opens hook-bump PRs.
1348
+
1349
+
### 3. Sweep history once
1350
+
1351
+
Before turning the layers above on, check whether anything already leaked. Trufflehog walks every commit in your history and reports candidate secrets:
1352
+
1353
+
```bash
1354
+
docker run --rm -v "$PWD:/repo" trufflesecurity/trufflehog:latest \
1355
+
git file:///repo --no-update
1356
+
```
1357
+
1358
+
If trufflehog finds a real secret, **rotate it immediately** at the issuer (Slack, Anthropic, OpenAI, etc.). Rewriting git history with `git-filter-repo` is optional — once a token has been pushed publicly, assume it's compromised and prioritise rotation over removal.
0 commit comments