Skip to content

feat(tcfeed): make the ask short enough to read, and true - #139

Merged
ralyodio merged 1 commit into
masterfrom
worktree-tcfeed-short-body
Aug 14, 2026
Merged

feat(tcfeed): make the ask short enough to read, and true#139
ralyodio merged 1 commit into
masterfrom
worktree-tcfeed-short-body

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

"too much to process, obviously ai generated we are not doing this"

Both halves of that were right. The issue and request together ran to 1,122 words for a two-file CI change, sent unsolicited to a stranger — and they were written by an AI. Arguing at length with someone who said it was too long only proves the point, so this sends less instead.

words characters
before 1,122 7,042
after 330 2,443

The 330 includes the dry-run framing and the diffstat; the text actually sent is about 110 words for the issue and 150 for the request.

Cut

The CodeQL comparison, the permissions paragraph, the narrative about why pinning matters, and the demo block.

The demo was the largest single piece and the one most likely to read as a threat — it reported 353 findings and 3 criticals against a repository nobody had asked us to scan. Its own docstring worried about becoming exactly that. Everything it claimed is still checkable in the diff, which is where it belongs.

Added rather than cut

The scope is now stated. Every one of 69 requests said the workflow "scans the diff". scanPath is "." — it scans the whole checked-out repository. SAG asked for that correction, and they were reading the same false sentence everyone else was.

The AI assistance is disclosed. It's true, it's checkable, and a maintainer who works it out for themselves is entitled to be annoyed. Some will decline on the disclosure alone; that's a fair trade for not having it discovered later.

Also states that an install or scan failure does fail the job — the old body left that to be inferred from "report-only".

Result

Would a pull-request security scan be useful here, or is this already covered?

One workflow. On each pull request it scans the checked-out repository for
hardcoded credentials, injection, SSRF and unsafe deserialisation, and writes
findings to the Security tab. Report-only — findings never fail the build.

Two files under `.github/`, a pinned @profullstack/threatcrush@0.11.0 whose
tarball is hashed before install, and `pull_request` rather than
`pull_request_target`.

Disclosure: I maintain ThreatCrush; MIT and free. Written with AI assistance.
Closing this is a fine answer and I will not ask again.

Net −200 lines. Verified by rendering a dry run.

🤖 Generated with Claude Code

"too much to process, obviously ai generated we are not doing this"

Both halves of that were right. The issue and request together ran to
1,122 words for a two-file CI change, sent unsolicited to a stranger,
and they were written by an AI. Arguing at length with someone who said
it was too long only proves the point, so this sends less instead.

  before  1,122 words   7,042 characters
  after     330 words   2,443 characters

and the 330 includes the dry-run framing and the diffstat; the text
actually sent is about 110 words for the issue and 150 for the request.

Gone: the CodeQL comparison, the permissions paragraph, the narrative
about why pinning matters, and the demo block. The demo was the largest
single piece and the one most likely to read as a threat — it reported
353 findings and 3 criticals against a repository nobody had asked us to
scan. Its own docstring worried about becoming exactly that. Everything
it claimed is still checkable in the diff, which is where it belongs.

Two things added rather than cut:

The scope is now stated. Every one of sixty-nine requests said the
workflow "scans the diff". scanPath is ".", so it scans the whole
checked-out repository. SAG asked for that correction and they were
reading the same false sentence everyone else was.

The AI assistance is disclosed. It is true, it is checkable, and a
maintainer who works it out for themselves is entitled to be annoyed.
Some will decline on the disclosure alone; that is a fair trade for not
having it discovered later.

Also says that an install or scan failure fails the job, which the old
body left to be inferred from "report-only".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

69 finding(s)

HIGH/CRITICAL: 12 | MEDIUM: 56 | LOW: 1

Severity Rule Location
HIGH secret-aws-access-key prd/0003-detect-hardcoded-secrets-before-they-are-committed-or-served.md:126
HIGH sh-eval-expansion .githooks/pre-commit:26
HIGH js-electron-node-integration apps/desktop/src/main/index.ts:22
HIGH sh-remote-script-execution apps/web/public/install.sh:272
HIGH sh-remote-script-execution apps/web/public/install.sh:320
HIGH secret-generic-credential modules/spend-guard/config/example.conf.toml:13
HIGH secret-generic-credential modules/spend-guard/README.md:84
HIGH secret-generic-credential PRD.md:268
HIGH tls-verification-disabled prd/0004-find-dangerous-code-patterns-without-pretending-to-be-a-compiler.md:121
HIGH tls-verification-disabled prd/0004-find-dangerous-code-patterns-without-pretending-to-be-a-compiler.md:122
HIGH sh-remote-script-execution scripts/smoke-test.sh:46
HIGH sh-remote-script-execution scripts/smoke-test.sh:47
MEDIUM insecure-temp-file .githooks/commit-msg:16
MEDIUM insecure-temp-file .githooks/post-commit:20
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/init.ts:70
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/init.ts:79
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/service.ts:88
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/service.ts:111
MEDIUM sql-template-interpolation apps/cli/src/core/state.ts:121
MEDIUM sql-template-interpolation apps/cli/src/core/state.ts:125
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:31
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:33
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:34
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:35
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:36
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:43
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:49
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:56
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:63
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:82
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:84
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:85
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:93
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:98
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:105
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:112
MEDIUM js-shell-exec-interpolation apps/cli/src/index.ts:425
MEDIUM js-unescaped-html-sink apps/web/src/app/about/page.tsx:180
MEDIUM js-unescaped-html-sink apps/web/src/app/about/page.tsx:184
MEDIUM js-open-redirect apps/web/src/app/auth/login/page.tsx:50
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:125
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:153
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:157
MEDIUM js-unescaped-html-sink apps/web/src/app/get-whitepaper/page.tsx:346
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:211
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:215
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:219
MEDIUM js-unescaped-html-sink apps/web/src/app/page.tsx:120
MEDIUM js-unescaped-html-sink apps/web/src/app/store/[slug]/page.tsx:107
MEDIUM js-open-redirect apps/web/src/components/funding/FundingClient.tsx:97

…and 19 more. Full results in the Security tab.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 3048dea into master Aug 14, 2026
11 checks passed
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.

1 participant