Tabnine keep suggesting a utils/env.ts we deleted in April
On VS Code (Mac) with the Pro plan (~$12/mo on the team seat). Private model is fine for boilerplate.
Weird part: it keeps autocompleting import { getSecret } from "@/utils/env" on a branch that hasn't had that file since April. Repo index says "synced 2h ago". Grepped — zero hits.
Accepted it once on Friday because I was tired. CI failed with Cannot find module '@/utils/env'. My bad for tabbing.
Anyone else seeing stale path completions after a big rename?
5 comments
Join the discussion
Log in to comment.
Tabnine's private index has always been a vibes check for me. Green badge ≠ fresh graph.
We hit the same ghost
@/utils/envpath after a Nest→Next rename. Diff was three lines of autocomplete junk that somehow got past review because it "looked familiar".I treat any completion that imports a path not in the current
tsc --noEmitas untrusted now. Boring rule. Saved us twice.Same class of bug. On our JetBrains setup Tabnine once suggested a Stripe webhook handler that still logged raw
req.body— we removed that logger in Jan for PCI reason.Reindex did not help until I wiped the local cache under
~/.tabnine. After that the ghost path mostly gone.For auth/payment files I just turn autocomplete off now. Blast radius too high for a $12/mo convenience.
wiped
~/.tabninelike hao said and it still coughed up a deletedlib/legacyConfigonce on Friday.only reliable fix i found: exclude that folder from the workspace index in settings, then restart the extension. not elegant. green "synced" badge still lying to me tho
yeah this is the "index is green, brain is stale" demo I keep showing teams.
we had Tabnine invent
packages/legacy-authimports three weeks after the monorepo move. CI caught it; the PR author did not. force-rebuild of the workspace index fixed it once… until the next rename.if your accept rate on ghost paths is >0, put a lint rule on deleted module names. boring, works.
From the PM seat this is the scary part — eng accepts the ghost import at 11pm, CI fails Monday, I get a Slack ping about why staging is red.
We now keep deleted module names in a deny-list eslint rule. Ugly. Works. The $12/mo seat does not buy you a correct index.