Anthropic just shipped 512,000 lines of Claude Code source to npm — because of ONE missing line in .npmignore. No CVE. No breach. Just a 59.8 MB source map sitting in a public package. Here's what actually happened: → Bun generates source maps by default → The npm package was missing `.map` in .npmignore → Researcher Chaofan Shou found it within hours → The map pointed to a zip on Anthropic's own cloud storage → 1,900 files of unobfuscated TypeScript — the full repo Then the internet did what the internet does. A clean-room rewrite hit 50,000 GitHub stars in 2 hours. Reportedly the fastest-growing repo in GitHub history. Anthropic's statement: "release packaging issue caused by human error, not a security breach." Technically correct. Strategically catastrophic. The architecture of the fastest-growing dev tool of 2026 is now public domain. Why this matters for every developer shipping npm packages: - Source maps are ON BY DEFAULT in Bun, webpack, Vite, esbuild, Rollup - One missing .npmignore entry bundles your entire codebase - "Not a breach" and "total IP exposure" can be the same event - Your build pipeline is now your biggest trade-secret risk Three things to add to your CI today: 1. `npm pack --dry-run` — list every file before publish 2. Add `.map`, `.map.js`, `.ts`, `src/` to .npmignore 3. Set `sourcemap: false` for production builds, or use `hidden-source-map` If Anthropic's engineers missed it, your team will too. The scariest part? This wasn't sophisticated. It was one line of config. Check your next npm publish. Run the dry-run. Read every file in the tarball. Because the difference between shipping a library and shipping your company is sometimes just one glob pattern. If you found this useful, repost — someone in your network is one `npm publish` away from the same mistake. #npm #DevOps #SoftwareEngineering #ClaudeCode #SupplyChainSecurity
Anthropic's 512k Claude Code Lines Exposed Due to Missing .npmignore Entry
More Relevant Posts
-
I built a real-time Downtime Detector — and it taught me more about production infrastructure than any tutorial ever could. 🚀 Most uptime tools are deceptively simple on the surface. I wanted to go deeper — build something that could handle high concurrency, deliver instant status updates, and live inside a clean monorepo architecture that scales. Here's what's under the hood: 🔹 Frontend: Next.js (deployed on Vercel) — fast, server-rendered, and ready for the edge 🔹 Backend: Node.js in a Turborepo monorepo (deployed on Render) — shared packages, zero duplication 🔹 Database: Prisma + PostgreSQL via Neon — type-safe queries with a serverless-friendly DB 🔹 Real-time layer: Socket.io + Redis Pub/Sub — status changes broadcast instantly across all connected clients, no polling 🔹 DevOps: Fully Dockerized — multi-stage builds, final image under 1GB 💡 The hardest problem I solved: ESM module resolution inside a Dockerized monorepo is a rabbit hole nobody warns you about. When you're building a monorepo with shared packages, symlinks and relative paths that work perfectly in local dev can silently break inside a Docker container. I had to rethink how Node.js resolves binaries and how dependencies get linked at build time vs runtime — a problem that only surfaces in production, never in `npm run dev`. Debugging it forced me to actually understand what's happening beneath the abstractions we take for granted every day. 🛠 What the app does: → Monitors URLs at regular intervals → Detects downtime and latency spikes in real time → Pushes live status updates to the dashboard via WebSockets → Persists incident history to Postgres 📌 96%+ TypeScript across the entire monorepo. 🔗 Live dashboard: https://lnkd.in/gycRG_ir 🔗 GitHub: https://lnkd.in/g4YSDjkb If you're building in the open or have wrestled with monorepo + Docker headaches, I'd love to connect. What's the nastiest deployment bug you've squashed recently? Drop it below 👇 #BuildInPublic #OpenSource #SideProject #JavaScript #TypeScript #NodeJS #NextJS #Docker #DevOps #Redis #Prisma #WebDevelopment #FullStackDeveloper #SoftwareEngineering #100DaysOfCode #LearnInPublic
To view or add a comment, sign in
-
our Nginx Pod says "Completed." You smile. Sounds like a win, right? In Kubernetes, it's not. While prepping for my CKA today, I ran: kubectl run nginx nginx --image=nginx:1.23.1 Status: Completed. Pod dead. Web server gone. Here's what actually happened 👇 That second nginx argument silently overrode the container's CMD. The official nginx image runs: CMD ["nginx", "-g", "daemon off;"] My override stripped the daemon off; flag — the one thing keeping nginx alive in the foreground. Nginx forked to the background. PID 1 exited. Container exited. One extra word. Entire pod gone. The fix is simple: kubectl run nginx --image=nginx:1.23.1 No extra args. Trust the image. Let the CMD do its job. The real CKA lesson isn't YAML syntax. It's understanding what happens below the orchestration layer — Linux process signals, PID 1 behaviour, container entrypoints. The engineers who pass CKA don't just write manifests. They know why the process dies. Prepping for CKA? Drop your biggest "simple" mistake below. 👇 Let's save each other hours of debugging. #Kubernetes #CKA #CloudNative #DevOps #SRE #PlatformEngineering
To view or add a comment, sign in
-
-
Evening reflection: Docker Engine v29.3.0 preview strengthens security and resource handling, securing container flows like reliable handshakes. Early notes: https://lnkd.in/gq4jTYFT In containerized environments, these keep deployments robust. Early preview features on your radar? Reply! #Docker #DevOps #Containerization #Security #CloudNative
To view or add a comment, sign in
-
"Evening reflection: Docker Engine v29.3.0 preview strengthens security and resource handling, securing container flows like reliable handshakes. Early notes: https://lnkd.in/gq4jTYFT In containerized environments, these keep deployments robust. Early preview features on your radar? Reply! #Docker #DevOps #Containerization #Security #CloudNative
To view or add a comment, sign in
-
Stop leaking your source code. 🛑 I recently analyzed Claude code issue where production .map files were left publicly accessible. It’s a common but critical blunder that allows anyone to reverse-engineer minified bundles back into your original TypeScript source code. How to stay secure (My approach): * Debug Locally: Generate source maps locally to map cryptic production errors (e.g., Line 1, Col 5000) back to the exact TS line without ever uploading the map file. * Server-Side Blocking: If maps must be on the server, use Nginx rules to explicitly deny all access to any file ending in .map. * CI/CD Discipline: Ensure build artifacts are stripped of maps during the production pipeline and verify they are strictly listed in your .gitignore. Security isn’t just about the code you write; it’s about how you protect the build. #SoftwareEngineering #WebSecurity #TypeScript #DevOps #SeniorDeveloper #CodingTips #claudecode
To view or add a comment, sign in
-
⭐ 𝐃𝐢𝐬𝐜𝐨𝐯𝐞𝐫𝐞𝐝 𝐚𝐧 𝐨𝐩𝐞𝐧-𝐬𝐨𝐮𝐫𝐜𝐞 𝐩𝐫𝐨𝐣𝐞𝐜𝐭 𝐰𝐨𝐫𝐭𝐡 𝐬𝐡𝐚𝐫𝐢𝐧𝐠: 𝐊𝐮𝐛𝐞𝐏𝐨𝐥𝐚𝐫𝐢𝐬 If you've ever managed multiple Kubernetes clusters, you know the pain: - Jumping between servers just to switch clusters - Writing endless long kubectl commands to check a pod log - Opening Grafana, then AlertManager, then back to the terminal all for a single issue - Configuring RBAC just to give a developer read-only access KubePolaris addresses all of this with a clean, modern web UI built in React + Go. 𝐖𝐡𝐚𝐭 𝐦𝐚𝐤𝐞𝐬 𝐢𝐭 𝐢𝐧𝐭𝐞𝐫𝐞𝐬𝐭𝐢𝐧𝐠: 🏢 Multi-cluster management from a single interface no more context switching chaos 🔌 Native integration with Prometheus, Grafana, AlertManager, and ArgoCD 🔒 Enterprise-grade RBAC, audit logs, and permission control out of the box 🖥️ Built-in web terminal powered by xterm.js — no local kubectl required 🚀 One-command Docker deployment to get started in minutes 💯 Fully open source under Apache 2.0 The name says it all "𝐏𝐨𝐥𝐚𝐫𝐢𝐬" is the North Star, meant to guide your K8s operations reliably. It's still a young project, but the architecture is solid (single Go binary with embedded React frontend), the documentation is clean, and it already solves real DevOps pain points. If you work with Kubernetes at scale, it's definitely worth a look 👇 https://lnkd.in/es_7E_B9 #Kubernetes #CloudNative #DevOps #OpenSource #K8s #Platform Engineering
To view or add a comment, sign in
-
-
That feeling when the terminal finally prints the exact WebSocket handshake you’ve been chasing all week. ⚡ I’ve been deep in the trenches building the real-time architecture for TaskZilla Pro. Today, I finally locked in the hardest part of the pipeline: syncing a drag-and-drop Kanban board across multiple clients with zero latency and zero screen flickering. Building a true real-time system is a completely different beast than standard REST APIs. To make it work, I had to engineer a solution that cut through several layers of infrastructure: 🔧 Asynchronous Networking: Overcame aggressive Python socket timeouts by implementing Eventlet monkey-patching at the Gunicorn entry point, forcing the standard library to use async greenlets. 🔄 Unified Event Routing: Resolved "Split Brain" server instances by configuring Redis as a message queue broker, allowing Flask-SocketIO to seamlessly broadcast events across isolated Docker containers. 🧠 Single Source of Truth: Refactored the React frontend to centralize state. Instead of relying on expensive API re-fetches, the Kanban board now utilizes optimistic UI updates, directly injecting the WebSocket JSON payloads into memory. The result is pure, seamless DOM manipulation. A task drops into "In Review" on one screen, and instantly updates on every other observing client without a single loading spinner or refresh. Massive win for the TaskZilla Pro infrastructure today. Back to building. 🚀 #WebSockets #ReactJS #Flask #Redis #Docker #SoftwareEngineering #BuildInPublic
To view or add a comment, sign in
-
-
Designing Clean Admin APIs with Django REST Framework I just structured the Admin View Layer for my group system and the focus was clarity, security, and scalability. Instead of bloated endpoints, I built focused admin APIs for: Group creation Editing group details Viewing members Removing members Accessing real-time member counts Each view is intentionally thin — delegating logic to service layers. This keeps the API layer clean and ensures the system can scale without becoming tightly coupled or hard to maintain. This is the kind of backend structure you build when you're thinking beyond MVP. #DjangoREST #APIDesign #BackendEngineering #CleanArchitecture #SystemDesign
To view or add a comment, sign in
-
-
🔐 Why Security by Design is embedded into my NestJS template When building nestjs-paw-template, I didn’t treat security as an afterthought. I built it into the architecture from day one. In real systems, security isn’t a feature — it’s a foundation. 🚀 Why Security by Design matters - Prevents vulnerabilities early instead of patching them later - Enforces secure defaults across modules and endpoints - Reduces the attack surface by keeping boundaries clear and isolated - Encourages predictable behavior under failure or malicious input - Supports compliance and governance as the platform scales - Helps teams ship faster by avoiding last‑minute “security surprises” Security by Design isn’t about paranoia — it’s about engineering discipline. It ensures that every part of the system is built with protection, resilience, and trust in mind. For me, integrating security from the start is essential to delivering enterprise‑ready, robust, and trustworthy APIs. 👉 Repo: https://lnkd.in/eGpVD5y2 #SecurityByDesign #AppSecurity #NestJS #BackendArchitecture #SoftwareEngineering #SecureByDefault #EnterpriseSoftware #NodeJS #APISecurity
To view or add a comment, sign in
-
The kube-scheduler is not one function. It is 13 extension points in a framework. Every pod walks: PreEnqueue → QueueSort → PreFilter → Filter → PostFilter (preemption here) → PreScore → Score → NormalizeScore → Reserve → Permit → PreBind → Bind → PostBind. I walked through every stage and a preemption demo. Two nginx pods fill the cluster, a high-priority payments pod shows up, scheduler evicts one nginx to make room. A few things worth knowing: • At Filter alone, 14 in-tree plugins each rate every node, in parallel. One Unschedulable verdict and the node is out. • At Score, 9 plugins rate the survivors 0–100, weighted. TaintToleration's weight of 3 is the strongest single signal at scoring time. • Tie-breaking uses Go's rand.Int (not rand.Intn) to avoid modulo bias on candidate node lists. • Reserve subtracts pod requests (never limits, never auto-defaulted) from an in-memory snapshot, so the next pod in the same cycle sees the node as already loaded. Full video and blog in the comments ↓ #Kubernetes #DevOps #CloudNative #K8s #PlatformEngineering #kubescheduler
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development