惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
H
Help Net Security
Recorded Future
Recorded Future
The Register - Security
The Register - Security
F
Full Disclosure
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
Security Archives - TechRepublic
Security Archives - TechRepublic
Simon Willison's Weblog
Simon Willison's Weblog
Cisco Talos Blog
Cisco Talos Blog
I
InfoQ
T
Tenable Blog
T
Tor Project blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
博客园 - 叶小钗
B
Blog
V
V2EX
Jina AI
Jina AI
L
LangChain Blog
月光博客
月光博客
W
WeLiveSecurity
U
Unit 42
AWS News Blog
AWS News Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 聂微东
V
Visual Studio Blog
A
Arctic Wolf
T
Tailwind CSS Blog
The Cloudflare Blog
SecWiki News
SecWiki News
S
SegmentFault 最新的问题
Hacker News - Newest:
Hacker News - Newest: "LLM"
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Securelist
www.infosecurity-magazine.com
www.infosecurity-magazine.com
腾讯CDC
雷峰网
雷峰网

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Chrome instaló 4 GB de IA en mi máquina sin pedirme permiso: inspeccioné qué hace realmente y no me gusta lo que encontré
Juan Torchia · 2026-05-05 · via DEV Community

Chrome instaló 4 GB de IA en mi máquina sin pedirme permiso: inspeccioné qué hace realmente y no me gusta lo que encontré

¿Por qué Google asume que 4 GB del almacenamiento de tu máquina le pertenecen? Llevaba semanas preguntándomelo cada vez que veía el mismo proceso de Chrome prendido en el monitor de actividad. Hoy lo abrí. Y lo que encontré me cambió la postura sobre algo que, hace no mucho, estaba celebrando con entusiasmo genuino.


Google Chrome AI model install without consent: lo que dice el thread y lo que dice mi disco

El thread de HN llegó a 204 puntos con una denuncia simple: Chrome descarga en silencio un modelo de IA de aproximadamente 4 GB sin ningún diálogo de confirmación, sin notificación visible, sin opción de rechazo durante el setup. El modelo forma parte de la infraestructura de Gemini Nano, el LLM on-device que Google empezó a integrar en Chrome 127+.

Mi postura inicial, cuando cubrí Gemma corriendo en el browser, era de entusiasmo cuidadoso. La IA local tiene sentido arquitectónico: latencia cero, privacidad por diseño, sin API keys. Lo sigo creyendo. Pero hay una diferencia enorme entre implementar bien una idea correcta y tomar decisiones de almacenamiento por el usuario sin preguntar.

Fui a verificarlo en mi propia máquina. Mac con Chrome 137 estable. Esto es lo que encontré:

# Buscá el modelo de Gemini Nano en macOS
# Chrome lo guarda bajo el perfil de usuario, no en /Applications
find ~/Library/Application\ Support/Google/Chrome \
  -name "*.bin" -o -name "*.tflite" -o -name "*.gguf" \
  2>/dev/null | xargs ls -lh 2>/dev/null | sort -k5 -rh | head -20

# También revisá la carpeta específica de componentes
ls -lh ~/Library/Application\ Support/Google/Chrome/Default/GeminiNano/ 2>/dev/null || \
ls -lh ~/Library/Application\ Support/Google/Chrome/OptimizationGuide/ 2>/dev/null

Enter fullscreen mode Exit fullscreen mode

En mi caso, el path relevante vivía bajo OptimizationGuide. El componente se llama optimization_guide_model_store y ahí adentro había archivos que sumaban 3.7 GB en mi instalación.

# Medición exacta en mi máquina
du -sh ~/Library/Application\ Support/Google/Chrome/Default/optimization_guide_model_store/
# Resultado: 3.7G    /Users/juanchi/Library/Application Support/Google/Chrome/Default/optimization_guide_model_store/

# Ver qué hay adentro
find ~/Library/Application\ Support/Google/Chrome/Default/optimization_guide_model_store/ \
  -type f | while read f; do echo "$(ls -lh "$f" | awk '{print $5}')  $f"; done | sort -rh

Enter fullscreen mode Exit fullscreen mode

Lo que encontré eran archivos .pb (Protocol Buffers, el formato de modelo de Google) junto con metadata en JSON. Ninguno tiene extensión .gguf ni .tflite directamente expuesta — Google los envuelve en su propio formato de componentes para que sean más difíciles de inspeccionar con herramientas estándar.


Lo forense: permisos, procesos y consumo real

Mi tesis acá es clara: el problema no es el modelo en sí, es el vector de instalación. Y para entender ese vector, hay que mirar más allá del tamaño del archivo.

Quién lo instala y cuándo

Chrome usa su sistema de Component Updater — el mismo mecanismo que actualiza el browser sin pedirte permiso — para descargar el modelo. No es un installer separado. No hay un .pkg ni un .exe que el sistema operativo te muestre. Es Chrome hablando directamente con update.googleapis.com en background mientras vos estás mirando un video de YouTube.

# En macOS, podés ver las conexiones de Chrome en tiempo real
lsof -i -n -P | grep -i chrome | grep ESTABLISHED | awk '{print $9}' | sort -u

# O con netstat si preferís
netstat -an | grep ESTABLISHED | grep -v "127.0.0.1"
# Filtrá manualmente los IPs de Google (142.250.x.x, 172.217.x.x)

Enter fullscreen mode Exit fullscreen mode

Cuando corrí esto mientras Chrome estaba "inactivo" (sin ninguna pestaña abierta además de about:blank), tenía 11 conexiones establecidas a servidores de Google. Once. Sin que yo hubiera pedido nada.

Qué proceso lo consume

El proceso chrome_crashpad_handler no es el culpable — ese es legítimo. El que me llamó la atención fue el proceso helper sin GPU que aparece en el Monitor de Actividad con nombres como Google Chrome Helper (Renderer) consumiendo entre 180 MB y 400 MB de RAM en idle.

# Ver todos los procesos de Chrome y su consumo
ps aux | grep -i "Google Chrome" | grep -v grep | \
  awk '{printf "PID: %s | CPU: %s%% | MEM: %s KB | %s\n", $2, $3, $6, $11}' | \
  sort -t'|' -k3 -rn | head -10

Enter fullscreen mode Exit fullscreen mode

En mi medición, el consumo agregado de todos los procesos helper de Chrome en idle era de ~620 MB de RAM. No está corriendo inferencias activamente — pero está precalentado, listo.

Los permisos que nadie revisó

Acá está el detalle que más me incomodó. El modelo vive en el perfil del usuario, lo cual significa que:

  1. No requiere permisos de administrador para instalarse
  2. No aparece en "Configuración > Almacenamiento" del sistema operativo como una app identificable
  3. No se puede desinstalar desde el panel de aplicaciones — si eliminás Chrome, los archivos del perfil quedan (en macOS, el uninstaller estándar de Chrome no limpia ~/Library/Application Support/Google/Chrome/)
# Verificá qué pasa si "desinstalás" Chrome sin limpiar manualmente
# Este directorio sobrevive a la desinstalación estándar:
du -sh ~/Library/Application\ Support/Google/Chrome/
# En mi caso: 8.2G — mucho más que 3.7G del modelo solo
# El resto son caché, historial, cookies, logins guardados

Enter fullscreen mode Exit fullscreen mode

8.2 GB que Chrome deja en mi disco cuando "lo desinstalé". El modelo es menos de la mitad de eso.


Los gotchas que el thread de HN no menciona

El thread de 204 puntos está bien, pero le falta profundidad técnica en algunos puntos que me parecen importantes:

Gotcha 1: El modelo no se activa solo... por ahora

Lo que encontré en Chrome 137 es que el modelo está presente pero la API window.ai no está expuesta por defecto. Para usarla necesitás habilitar flags en chrome://flags. Eso cambia el análisis de riesgo: no es que Gemini Nano esté procesando cada página que visitás en este momento. Está descargado, pero dormido detrás de un flag.

El problema es que "por ahora" es la frase más peligrosa en software. Hoy es opt-in para devs. En Chrome 142 podría ser habilitado por defecto sin aviso. Y el modelo ya está en tu disco.

Gotcha 2: La misma crítica aplica a mis propias herramientas

Tengo que ser honesto: cuando hablo de esto, no puedo ignorar que mis propios agentes en Railway hacen algo funcionalmente similar. Cuando configuro un pipeline que descarga dependencias de ML automáticamente al arrancar el contenedor, también estoy tomando espacio de disco sin "preguntarle" al servidor. La diferencia es que yo soy el dueño del servidor y sé lo que estoy haciendo.

Pero esa diferencia es exactamente el punto: el consentimiento informado no es un tecnicismo, es el criterio que separa una herramienta de un parásito.

Gotcha 3: Deshabilitarlo no es obvio

Para evitar que Chrome descargue el modelo, la ruta no es intuitiva:

chrome://settings/
→ "You and Google" / "Vos y Google"
→ "Google Chrome and the web"
→ Deshabilitar "Help improve Chrome's features and performance"

Enter fullscreen mode Exit fullscreen mode

Pero incluso con eso deshabilitado, el modelo que ya está descargado no se borra solo. Hay que hacerlo manualmente:

# Eliminar el modelo manualmente (macOS)
# ADVERTENCIA: verificá el path exacto en tu versión de Chrome antes de borrar
rm -rf ~/Library/Application\ Support/Google/Chrome/Default/optimization_guide_model_store/

# Verificar que se fue
du -sh ~/Library/Application\ Support/Google/Chrome/Default/optimization_guide_model_store/ 2>/dev/null || \
echo "Directorio eliminado correctamente"

Enter fullscreen mode Exit fullscreen mode

Gotcha 4: La trampa del "on-device privacy"

Google vende Gemini Nano como privacidad mejorada porque corre local. Y técnicamente es verdad: la inferencia no sale de tu máquina. Pero eso no significa que los metadatos de uso no salgan. Chrome sigue reportando a Google qué features usás, con qué frecuencia, cuándo. La IA corre local; la telemetría de comportamiento no.

Escribí sobre esto desde otro ángulo cuando documenté el supply chain attack simulado sobre dependencias de ML — la superficie de ataque no es solo el modelo, es todo el ecosistema alrededor.


FAQ: Google Chrome AI model install without consent

¿Cómo sé si Chrome ya instaló el modelo de 4 GB en mi máquina?

En macOS, corré: du -sh ~/Library/Application\ Support/Google/Chrome/Default/optimization_guide_model_store/. Si el directorio existe y pesa más de 1 GB, el modelo está presente. En Windows, el path equivalente es %LOCALAPPDATA%\Google\Chrome\User Data\Default\optimization_guide_model_store.

¿Puedo borrar el modelo sin romper Chrome?

Sí. Chrome reconstruye el directorio si decidís habilitarlo de nuevo, pero no lo va a volver a descargar automáticamente si deshabilitaste la opción en configuración. El browser funciona normalmente sin el modelo — las features de Gemini Nano simplemente no están disponibles.

¿El modelo de Gemini Nano en Chrome está leyendo lo que escribo?

No de forma continua ni automática con Chrome 137 estable. La API requiere habilitación explícita vía flags. Pero "ahora no" no es la misma garantía que "nunca sin permiso". El modelo físicamente está en el disco y puede activarse en versiones futuras.

¿Esto viola el GDPR o regulaciones de privacidad?

Es una zona gris. El GDPR en Europa y regulaciones similares exigen consentimiento explícito para procesar datos personales, pero instalar software en el dispositivo del usuario cae bajo otras directivas (ePrivacy). Google argumenta que el modelo no procesa datos personales per se, sino que es infraestructura local. La discusión legal está abierta — el thread de HN tiene varios abogados especializados que lo debaten.

¿Firefox o Safari hacen algo similar?

Firefox tiene ambiciones de IA on-device pero nada de esta escala deployado en producción todavía. Safari usa modelos de Apple Intelligence que sí corren localmente en Apple Silicon, pero el mecanismo de instalación es parte del update del SO, no del browser — lo cual le da más visibilidad al usuario. Es una diferencia de diseño que importa.

¿Qué tiene que ver esto con los agentes de IA que ya uso localmente?

Mucho. Cuando escribí sobre DeepClaude combinando Claude Code con DeepSeek o sobre specsmaxxing con YAML para agentes, yo controlaba qué modelos bajaba, cuándo y para qué. La diferencia no es tecnológica — es de agencia. Chrome te sacó esa agencia sin decirte nada.


Mi postura real: celebro la tecnología, no el método

Cuando cubrí la IA on-device con entusiasmo, lo que estaba celebrando era la arquitectura: inferencia local, latencia cero, privacidad por diseño. Sigo creyendo que esa es la dirección correcta. Cuando trabajo en pipelines reales con agentes, el modelo local es la diferencia entre un sistema que depende de una API externa y uno que controlo.

Pero hay una diferencia fundamental entre ofrecer IA on-device y tomarte el disco para instalarla sin preguntar.

Lo incómodo de este caso es que Google tiene razón en la tecnología y está equivocado en el método. Son dos evaluaciones independientes y hay que mantenerlas separadas, porque conflacionarlas lleva a dos errores opuestos: rechazar la IA local por culpa del vector de instalación, o defender el vector de instalación porque la tecnología tiene mérito.

Mi punto concreto: si Gemini Nano fuera opt-in con un diálogo de instalación claro, estaría escribiendo un post completamente diferente. Estaría explicando cómo habilitarlo y por qué vale la pena. En cambio estoy documentando cómo encontrarlo y borrarlo, que es exactamente la fricción que Google quería evitar forzando la instalación silenciosa.

Eso me molesta. Y me molesta más porque sé que van a seguir haciéndolo — Chrome 142, 145, 150 — cada vez con modelos más grandes, cada vez un poco más integrados, hasta que la línea entre "el browser" y "el modelo que vive en el browser" sea imposible de trazar.

Para ese momento, espero que el usuario promedio todavía sepa correr un du -sh y preguntar para qué sirve lo que encuentra.


Fuente original: Hacker News - Google Chrome silently installs a 4 GB AI model on your device without consent


Este artículo fue publicado originalmente en juanchi.dev