pinwise

Dependency maintenance for AI-built apps

Your AI-built app is quietly rotting. Here is the ticket.

pinwise reads your lockfile, picks the version that has survived 14 days in public, writes the ticket, and hands it to Claude Code, Cursor or Codex over MCP. Green only when a rescan proves the lockfile moved.

Checks npm·PyPI·crates.io·Go·Node·GitHub Actions· advisories from OSV.dev

Latest is not safe.

Fresh releases are where supply-chain attacks land. We only recommend versions that have been public for 14 days. You choose the window.

  1. nextnpm14.2.316.2.16d old · inside the window16.1.722d publiccritical advisory on installed version; 2 majors behind target
  2. reactnpm18.3.1= target19.2.148d publica whole major behind target
  3. react-domnpm18.3.1= target19.2.148d publica whole major behind target; coupled with react
  4. postcssnpm8.4.27= target8.5.6126d publicmoderate advisory on installed version
  5. axiosnpm1.7.9= target1.12.236d publicminor behind safe target 1.12.2
  6. zodnpm3.23.8= target3.25.76104d publicminor behind safe target 3.25.76

9 more packages are at their safe target.

Latest is not the target.

The safe target is the newest stable release that has been public for at least 14 days. Fresh releases are where supply-chain attacks land, so the ecosystem gets time to notice. You choose the window.

Renovate and pnpm can enforce a minimum age. pinwise also tells you what changed, what breaks, and files the work.

Safe window for nextnext 16.1.7 was released 28 Sep and cleared the 14-day window on 12 Oct, so it is the safe target. 16.2.1, the latest, is 6 days old and stays inside the window until 28 Oct.today · 20 Oct16.1.7safe target+14d · 12 Oct16.2.1latest · 6d old+14d · 28 Oct21 Sep28 Sep5 Oct12 Oct19 Oct26 Oct2 Nov
inside the 14-day windoweligible as a targetscan time

The ticket is the prompt.

10bumps5tickets

Not a pull request per bump. 10 outdated packages in this scan became 5 tickets, in dependency order, with the breaking changes for this repo already researched. Your agent reads one and starts typing.

TDB-0001.mdget_ticket
# TDB-0001 · Close the Next.js middleware auth bypass next 14.2.3 → 14.2.33  (P0 · cve · lane L1 web)Target released 2026-09-12; past the 14-day safe window. ## Advisories- GHSA-f82v-jwr5-mffw / CVE-2025-29927 (critical): middleware  auth bypass via x-middleware-subrequest. Fixed in 14.2.25. ## Breaking changes for this repoNone on the 14.2 line. ## Files touchedmiddleware.ts · next.config.mjs · app/layout.tsx ## Work plan1. Pin next@14.2.33 in package.json.2. pnpm install; commit the regenerated lockfile.3. Add a test for a spoofed x-middleware-subrequest header. ## Test rulesNever delete, skip or loosen a test. Justify every change. ## Acceptance- [ ] lockfile resolves next@14.2.33- [ ] no advisories for next on rescan- [ ] middleware tests pass unchanged ## Reportcomplete_ticket(id, evidence)  → see /docs/tickets#evidence
30 lines · markdown · served over MCPWhat every ticket contains

We don’t believe the agent. We believe the lockfile.

pnpm-lock.yamlrescan @ 9c1e4b2 · TDB-0001
-  next@14.2.3
+  next@14.2.33

evidenceClose the Next.js middleware auth bypass

Verified ref
pinwise/TDB-0001-next-14.2.33
Rescan commit
9c1e4b2
Scan id
01K7R9W2D4H6J8M0P2Q4S6T8VA
Tests
pass · 4 commands
tests.output_tail
$ pnpm test
$ pnpm lint
$ pnpm typecheck
$ pnpm build
Test Files  42 passed (42)
     Tests  318 passed (318)
  • middleware.test.tsAdded a case for a spoofed x-middleware-subrequest header (CVE-2025-29927).

Thirty client repos, one digest.

  • A weekly email across every client repo, worst first.
  • Tickets pushed to each client's own Linear.
  • A monthly report you can forward without editing.

$149 / month for up to 100 repos, with client workspaces and branded reports.

See the Agency plan
pinwise digest · Monday, 7:004 client repos · 10 open tickets · worst first
Sample digest: debt score per client repo, worst first
RepoScoreWeekOpen
vibehaus/storefront39Rotting−65
lumen/clinic-portal58Drifting+43
northwind/shop74Drifting+112
fieldnotes/app91Healthy±00

Sample digest. Scores use the same scorer as the public report.

Per repo, not per seat.

No card for Free. Annual billing gets two months free. Agencies get their own plan.

  1. Free

    $0/ mo

    1 repo

    See what is rotting.

    • Weekly scan
    • Tickets visible
    • Research on the top 3
  2. Studio

    $59/ mo

    25 repos

    A small team, many repos.

    • Everything in Solo
    • Linear and GitHub Issues sync
    • Slack notifications
  3. Agency

    $149/ mo

    100 repos

    Thirty client repos, one digest.

    • Everything in Studio
    • Client workspaces
    • Branded monthly reports

Compare all plans, Agency included

Questions, answered plainly.

Anything else: the ticket docs and the security page go deeper.

Do you touch my code?

No. The GitHub App has read-only access to manifests and lockfiles. We never open pull requests, never push, and never run your code. Your agent makes the change on your machine; we only read the result.

Permissions and data handling
Which agents work?

Anything that speaks MCP: Claude Code, Cursor, Codex, Copilot and Windsurf. One config block, then the agent can list, start and complete tickets itself.

MCP setup per agent
What about private repos?

Supported through the read-only GitHub App, on the repos you select. The free scanner on this page is for public repos only.

How is this different from Dependabot?

Fewer, researched, prioritised tickets instead of a pull request per bump; a safe window so you never land on a release younger than 14 days; verification by rescan; and an interface built for coding agents.

Which ecosystems?

npm, pnpm and yarn lockfiles, PyPI, crates.io, Go modules, the Node runtime from .nvmrc or engines, and GitHub Actions pins. Anything else we detect is listed for manual review.

What do you store?

Manifests, lockfiles and scan results. Never source code. pinwise has no use for it and no way to run it.

Privacy policy
Can I push tickets to Linear?

Yes, on Studio and above, along with GitHub Issues. Status syncs from us to Linear: when a rescan verifies the fix, the Linear issue closes too.

Compare plans

Find out what your repo is quietly carrying.

Public repos, about twenty seconds, nothing stored but manifests and lockfiles. The first ticket is on the house.