AI Briefing/בלוג
by coding·20 באוקטובר 2026·5 דקות קריאה

by coding: השגיאה של Neon שזזה מה-boot לשאילתה הראשונה

agent שכתב ביקורת על Neon מצא ש-1.2.0 העבירה את השגיאה על env חסר מה-boot לשאילתה הראשונה. מה זה אומר על קוד שכותבים agents.

  1. 01בדקו env קריטיים בעצמכם ב-boot, אל תסמכו על הדרייבר שיזרוק
  2. 02health check שלא נוגע ב-DB משקר. תוסיפו select 1 ל-readiness
  3. 03תריצו mutation testing על קוד שה-agent כתב, coverage לא מספיק

9 באוקטובר: Claude Code כותב ביקורת

1,320 ביקורות. זה מה שיש ל-Neon ב-agent.reviews, עם דירוג 4.1. ומה שמיוחד שם: את הביקורות לא כותבים אנשים. כותבים אותן coding agents, כמו Claude Code, Codex ו-Cursor, אחרי שהשתמשו בכלי בתוך משימה אמיתית. האתר עלה ל-Show HN ב-7 באוקטובר 2026, ול-npm לבד יש שם כבר 11,658 ביקורות.

ב-9 באוקטובר Claude Code השאיר שם ביקורת על הדרייבר של Neon. לא ציון וזהו, אלא diff. הוא השווה שתי גרסאות של אותה פונקציה, neon(), ומצא שבין 1.1.0 ל-1.2.0 נעלם משהו קטן: הרמז.

לדעתי הסיפור הזה גדול יותר ממה שנראה. לא בגלל Neon. כי זה בדיוק סוג הבאג שקוד by coding agents גם מייצר וגם נתקל בו הכי הרבה: שינוי שקט מתחת לרגליים, שהטסטים לא רואים.

agents כבר כותבים ביקורות על הכלים שאתם בוחרים, ושם צצה הרגרסיה של Neon לפני שהגיעה ל-changelog שלכם (credit: agent.reviews)
agents כבר כותבים ביקורות על הכלים שאתם בוחרים, ושם צצה הרגרסיה של Neon לפני שהגיעה ל-changelog שלכם (credit: agent.reviews)

מה השתנה בין 1.1.0 ל-1.2.0

ככה זה כתוב בביקורת, מילה במילה:

In 1.1.0, neon() with a missing connection string throws at construction with a hint that an environment variable may be unset. In 1.2.0 construction succeeds, and the first query fails with a generic message about a missing user, host or database.

— Claude Code, ביקורת על Neon ב-agent.reviews, 9 באוקטובר 2026

בגדול: אותה טעות, משתנה סביבה שלא הוגדר, אבל נקודת הנפילה זזה. ב-1.1.0 האפליקציה נופלת ברגע שיוצרים את ה-client, עם הודעה שאומרת לכם איפה לחפש. ב-1.2.0 ה-client נוצר בשקט, והטעות מחכה לשאילתה הראשונה. שם היא מגיעה עם הודעה כללית על user, host או database חסרים. הרמז על ה-env נעלם.

וזו קפיצת minor. מי שמחזיק ^1.1.0 ב-package.json קיבל אותה ב-install הבא בלי לשים לב.

איך המנגנון עובד
איך המנגנון עובד
אותה טעות קונפיגורציה, אבל ב-1.2.0 היא עוברת boot ו-deploy ונופלת רק בבקשה הראשונה של משתמש (Claude Code ב-agent.reviews)
אותה טעות קונפיגורציה, אבל ב-1.2.0 היא עוברת boot ו-deploy ונופלת רק בבקשה הראשונה של משתמש (Claude Code ב-agent.reviews)

איך זה נראה מבחוץ

עזבו רגע את ה-agent. תחשבו מה קורה ב-deploy רגיל עם env חסר. נגיד מישהו שינה שם ל-DATABASE_URL בסביבת staging, או שה-secret לא נטען.

עם 1.1.0: ה-build עובר, השרת מנסה לעלות ונופל. ה-deploy אדום. מעצבן, אבל אתם יודעים מה קרה.

עם 1.2.0: השרת עולה. אם ה-health check שלכם מחזיר 200 בלי לגעת ב-DB, הוא ירוק. ה-deploy ירוק. ואז הבקשה הראשונה שצריכה DB מחזירה 500, עם הודעה שמדברת על user ו-host. ב-serverless זה עוד יותר מבלבל, כי כל cold start חוזר על אותו סיפור, והלוגים מתמלאים בשגיאות שנראות כמו בעיית הרשאות.

התיקון הראשון שכולם ינסו

הודעה על user, host או database חסרים שולחת אתכם למקום הלא נכון. מה בודקים קודם? את הסיסמה, את ה-role ב-console של Neon, אם ה-branch נמחק, אם ה-host השתנה. אולי מסובבים credentials, ליתר ביטחון.

עכשיו תשימו בלופ coding agent, תדביקו לו את השגיאה ותגידו לו לתקן. הוא יעשה בדיוק את אותו דבר, רק מהר יותר: ינסה פורמט אחר ל-connection string, יעטוף ב-retry, אולי יוסיף ערך default. כל תיקון כזה נראה סביר. אף אחד מהם לא נוגע בבעיה. ו-default ל-connection string אפילו קובר אותה עוד שכבה.

הסתייגות: אני לא יודע מה Neon רצו להשיג ב-1.2.0. אולי זה lazy init מכוון, ויש לזה היגיון בסביבות edge. אבל הרמז הלך לאיבוד בדרך, ופה זה כבר לא עניין של עיצוב, זו פשוט הודעת שגיאה גרועה יותר.

הסיבה האמיתית: fail-fast שהפך ל-fail-late

הבעיה היא לא Neon. הבעיה היא שהאפליקציה סמכה על ספרייה חיצונית שתבדוק בשבילה קונפיגורציה. כל עוד הספרייה זרקה בבנאי, קיבלתם את הבדיקה בחינם. ברגע שהיא הפסיקה, לא נשאר שום דבר שבודק.

וזה בדיוק המקום שבו קוד שכתב agent חלש. ה-agent כותב neon(process.env.DATABASE_URL!), עם סימן קריאה של TypeScript שמשתיק את הקומפיילר, והטסטים רצים עם .env.test שתמיד מלא. Coverage יפה, אפס בדיקה של המקרה שבאמת נשבר. Flawd, כלי mutation testing שעלה ל-Show HN ב-2 בספטמבר, אומר את זה ישר: suites שנכתבו עם AI מגיעים ל-coverage גבוה מהר, הרבה פעמים כי הם מחקים את המבנה של הקוד ולא את המשמעות שלו. הטסטים מריצים הכול ובודקים מעט.

ורגע, מי תפס את הרגרסיה בסוף? agent אחר, שבמקרה הריץ את שתי הגרסאות והשווה. לא טסט. לא CI.

מה לבדוק אצלכם השבוע

קודם כל, תבדקו קונפיגורציה בעצמכם, ב-boot, ותיפלו בקול:

db.ts
import { neon } from "@neondatabase/serverless";
const url = process.env.DATABASE_URL;
if (!url || !url.startsWith("postgres")) {
throw new Error("DATABASE_URL missing or malformed, refusing to boot");
}
export const sql = neon(url);
export async function assertDbReachable() {
await sql`select 1`;
}

חוץ מזה, טסט שמוחק את המשתנה ומוודא שהעלייה נכשלת. זה הטסט שה-agent לא יכתוב לבד אם לא תבקשו ממנו במפורש:

db.test.ts
import { test, expect, vi } from "vitest";
test("boot fails loudly without DATABASE_URL", async () => {
vi.resetModules();
vi.stubEnv("DATABASE_URL", "");
await expect(import("./db")).rejects.toThrow(/DATABASE_URL/);
vi.unstubAllEnvs();
});

ועוד שלושה דברים קטנים:

ה-agent שלכם יכתוב קוד טוב יותר כל רבעון. השאלה היא מי נופל ראשון כשמשהו זז מתחת לרגליים: ה-boot, או המשתמש.

גם ב-router בוגר, בערך אחד מכל שישה באגים מושתלים עובר ירוק. coverage לא אומר שמישהו בודק (Flawd)
גם ב-router בוגר, בערך אחד מכל שישה באגים מושתלים עובר ירוק. coverage לא אומר שמישהו בודק (Flawd)

מקורות

  1. Show HN: Agent.reviews – Where AI agents read and write reviews on tools · 2026-10-07
  2. Show HN: Mowgli – Figma for the agent era, with Claude Code and design export · 2026-02-28
  3. Show HN: Flawd is mutation testing for the AI era · 2026-09-02
  4. Show HN: r/place for coding agents, the longer it stays up, the more you keep · 2026-08-10
  5. Show HN: The why and how of TurboPentest for the Agentic Era · 2026-04-24
  6. How do AI coding agents work? - by Rich Holmes

איך נכתב הפוסט: נוסח על ידי הסוכן שלנו מתוך 6 מקורות, ונערך ואושר על ידי קובי אלמוג.

עוד מונחים

כל המונחים →
3/4

ChatGPT מקרוב: הפיצ'רים שמהנדסים משאירים כבויים

Projects, memory, canvas, deep research, agent ו-connectors ב-ChatGPT: מה כל אחד עושה, איפה הוא נופל, ומה להפעיל כבר השבוע.

1/5

Claude Code בפרקטיקה, חלק 1: CLAUDE.md קצר, הרשאות קשוחות

שלושת קבצי ה-CLAUDE.md, auto memory, הרשאות ב-settings.json ופקודות שכדאי שיהיו באצבעות. צעד אחרי צעד, לצוות אמיתי.

2/5

Claude Code בפרקטיקה, חלק 2: hooks, MCP ו-skills, מה הולך לאן

CLAUDE.md אומר מה חייב, skill איך, MCP מה אפשר, hook אוכף. PreToolUse שחוסם commit ל-main, formatter אוטומטי, שרת MCP ו-SKILL.md ראשון.