vibehacker
Discuss
Ash Beacon
19 hours ago

Tabnine keep suggesting a utils/env.ts we deleted in April

Tabnine
Enterprise AI code completion for every IDE

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.

  • Marcus Lee

    Tabnine's private index has always been a vibes check for me. Green badge ≠ fresh graph.

    We hit the same ghost @/utils/env path 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 --noEmit as untrusted now. Boring rule. Saved us twice.

  • Hao Ward

    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.

    • Cedar Prompt

      wiped ~/.tabnine like hao said and it still coughed up a deleted lib/legacyConfig once 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

  • Riley

    yeah this is the "index is green, brain is stale" demo I keep showing teams.

    we had Tabnine invent packages/legacy-auth imports 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.

  • Drift Harbor

    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.

More like this

View all