Skip to content

deps: name autoblog by its tarball, so Dependabot cannot resolve it over SSH - #183

Merged
ralyodio merged 1 commit into
masterfrom
fix-autoblog-tarball
Aug 18, 2026
Merged

deps: name autoblog by its tarball, so Dependabot cannot resolve it over SSH#183
ralyodio merged 1 commit into
masterfrom
fix-autoblog-tarball

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Every Dependabot PR on this repo is failing, and none of them fail for anything they changed. pnpm install dies before a test runs, which is why Lint & Type Check, Run Tests and Security Audit all go red together on #181 and #182:

git clone git@github.com:profullstack/autoblog.git
fatal: Could not read from remote repository.   → exit 128

Why master is green and the Dependabot branches are not

package.json said "@profullstack/autoblog": "github:profullstack/autoblog#75e54af" on every branch. That shorthand is the problem — pnpm may resolve it either way, and it resolved differently once the lockfile was regenerated:

branch resolved to CI
master https://codeload.github.com/.../tar.gz/75e54af green
#181 / #182 git+https://git@github.com:profullstack/autoblog.git red

A GitHub Actions runner has no key for git@github.com, and no reason to have one — the repository is public. So the SSH resolution can never work in CI, and it will come back on every future Dependabot PR as long as the shorthand is there.

The fix

Name the tarball. There is then nothing left to re-resolve: the specifier is the URL that was already working, and any future lockfile regeneration produces the same thing instead of a coin flip.

  • resolved commit unchanged at 75e54af
  • zero occurrences of git@github.com left anywhere in pnpm-lock.yaml
  • two lines changed in total

Verified

  • the tarball answers HTTP 200 to an unauthenticated request — exactly what a runner does
  • pnpm install --frozen-lockfile completes, with @profullstack/autoblog installed
  • tsc --noEmit passes and the full suite is green — 189 files, 2,609 tests passed, 7 skipped

This unblocks #181 and #182 once they pick up master. Note #182 is the major group (14 packages), so it may still have real failures of its own once install works — this only removes the failure that was masking everything.

🤖 Generated with Claude Code

…ver SSH

Every Dependabot pull request on this repo failed, and none of them failed for
anything they changed. `pnpm install` died before a test ran, which is why Lint
& Type Check, Run Tests and Security Audit all went red together:

    git clone git@github.com:profullstack/autoblog.git
    fatal: Could not read from remote repository.   (exit 128)

The dependency was written as `github:profullstack/autoblog#75e54af`, a
shorthand pnpm may resolve either way. On master it had resolved to
codeload.github.com over anonymous HTTPS, which a runner can fetch; when
Dependabot regenerated the lockfile it re-resolved the same shorthand as a git
clone over SSH, which a runner cannot do — there is no key for git@github.com on
a GitHub Actions box, and there is no reason for one, because the repository is
public.

So the shorthand goes. Naming the tarball leaves nothing to re-resolve: the
specifier is now the URL that was working, and any future lockfile regeneration
produces the same thing rather than a coin flip. The resolved commit is
unchanged at 75e54af, and there is no longer a single git@github.com anywhere in
pnpm-lock.yaml.

Verified: the tarball answers 200 to an unauthenticated request, and
`pnpm install --frozen-lockfile` completes with @profullstack/autoblog installed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

106 finding(s)

HIGH/CRITICAL: 13 | MEDIUM: 32 | LOW: 61

Severity Rule Location
HIGH secret-private-key src/app/settings/seedbox-section.tsx:354
HIGH secret-generic-api-key docs/incidents/2026-05-okshanaby-supply-chain.md:18
HIGH sh-remote-script-execution scripts/setup-server.sh:155
HIGH sh-remote-script-execution scripts/setup-server.sh:392
HIGH sh-remote-script-execution scripts/setup-server.sh:401
HIGH tls-verification-disabled src/app/api/iptv-proxy/route.ts:38
HIGH tls-verification-disabled src/app/api/iptv/channels/route.ts:35
HIGH tls-verification-disabled src/app/api/iptv/playlists/[id]/route.ts:72
HIGH tls-verification-disabled src/app/api/iptv/playlists/route.ts:64
HIGH js-cors-origin-reflected src/app/api/public/shares/[slug]/checkout/route.ts:40
HIGH js-cors-origin-reflected src/app/api/public/vod/[slug]/checkout/route.ts:34
HIGH tls-verification-disabled workers/iptv-cache/epg-fetcher.ts:25
HIGH tls-verification-disabled workers/iptv-cache/playlist-fetcher.ts:62
MEDIUM secret-jwt .github/workflows/ci.yml:92
MEDIUM secret-jwt .github/workflows/ci.yml:93
MEDIUM secret-jwt .github/workflows/ci.yml:95
MEDIUM secret-jwt .github/workflows/ci.yml:133
MEDIUM secret-jwt .github/workflows/ci.yml:135
MEDIUM insecure-temp-file .github/workflows/deploy-droplet.yml:107
MEDIUM insecure-temp-file .github/workflows/deploy-droplet.yml:108
MEDIUM secret-jwt docs/tunein (2).py:9
MEDIUM secret-jwt docs/tunein.py:9
MEDIUM manifest-install-lifecycle-script package.json:16
MEDIUM insecure-temp-file scripts/act-setup.sh:120
MEDIUM insecure-temp-file scripts/setup-server.sh:86
MEDIUM sh-unquoted-expansion-destructive scripts/setup-server.sh:1046
MEDIUM sh-unquoted-expansion-destructive scripts/setup-server.sh:1056
MEDIUM insecure-temp-file scripts/update-imdb-daily.sh:16
MEDIUM insecure-temp-file scripts/update-imdb.sh:13
MEDIUM js-unescaped-html-sink src/app/api/player/route.ts:110
MEDIUM js-unescaped-html-sink src/app/api/player/route.ts:249
MEDIUM js-unescaped-html-sink src/app/blog/[slug]/page.tsx:40
MEDIUM js-unescaped-html-sink src/app/blog/[slug]/page.tsx:66
MEDIUM js-unescaped-html-sink src/app/email/email-content.tsx:566
MEDIUM js-open-redirect src/app/login/page.tsx:50
MEDIUM js-open-redirect src/app/pricing/page.tsx:161
MEDIUM js-open-redirect src/app/rent/[slug]/rent-client.tsx:170
MEDIUM js-unescaped-html-sink src/app/rss/rss-content.tsx:615
MEDIUM js-open-redirect src/app/vod/[slug]/vod-client.tsx:134
MEDIUM js-unescaped-html-sink src/app/youtube/youtube-content.tsx:546
MEDIUM js-open-redirect src/components/account/iptv-subscription-section.tsx:124
MEDIUM js-open-redirect src/components/account/iptv-subscription-section.tsx:156
MEDIUM js-unescaped-html-sink src/components/news/news-section.tsx:361
MEDIUM js-unescaped-html-sink src/components/news/news-section.tsx:734
MEDIUM redos-nested-quantifier src/lib/metadata-enrichment/metadata-enrichment.ts:317
LOW tls-verification-disabled docs/tunein (2).py:34
LOW tls-verification-disabled docs/tunein (2).py:37
LOW py-xpath-injection docs/tunein (2).py:37
LOW tls-verification-disabled docs/tunein (2).py:47
LOW py-xpath-injection docs/tunein (2).py:47

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

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 5ed0abf into master Aug 18, 2026
9 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