Dans Grok Build : lire un harness d'agent ouvert
Les 14–16 juillet 2026, xAI a publié Grok Build — l'agent de codage derrière sa CLI — comme dépôt public Apache 2.0 à xai-org/grok-build. Pas les poids. Le harness : la boucle d'agent, les implémentations d'outils, l'interface de terminal, le système d'extensions. Il est arrivé en une de Hacker News en quelques heures.
C'est un artefact rare. Presque tout agent de codage sérieux — Claude Code, Cursor, Codex — est livré comme binaire ou bundle. Ici, environ 800 000 lignes de Rust de production sont posées dans un dépôt que vous pouvez lire. Cela vaut davantage comme manuel que comme produit.
Cette page est la lecture pratique : ce qu'il y a vraiment dedans, ce que la structure enseigne sur la construction d'agents, et deux choses à propos de cette publication que la plupart des articles ont prises à l'envers.
- Comprendre ce qui a été publié et ce qui ne l'a pas été — le harness oui, les poids non, l'historique de développement non
- Lire la carte des crates comme une checklist de ce dont un agent de codage de production a réellement besoin
- Comprendre pourquoi Apache 2.0 signifie ici source-available, pas open-development — et pourquoi cette distinction est porteuse
- Voir le code du collecteur de données encore présent dans l'arbre publié, et ce que ses constantes confirment sur l'incident d'exfiltration de juillet
- Savoir ce qui est vraiment réutilisable de ce dépôt et ce qui est une impasse
Ce qui a réellement été publié
Le dépôt est à plus de 99 % du Rust, licencié Apache 2.0, et se décrit comme un harness d'agent de codage et une TUI — plein écran, interactive à la souris, extensible. Il se construit sur macOS et Linux avec une toolchain Rust épinglée.
Trois choses qu'il n'est pas :
- Pas le modèle. Les poids de Grok 4.5 ne sont pas ici et ne sont pas ouverts. Le harness parle à un endpoint hébergé. Vous pouvez lire chaque ligne de la façon dont l'agent pense à votre codebase et quand même ne pas le faire tourner sans l'API de xAI.
- Pas un historique de développement. Le dépôt a deux commits :
Publish harness and TUI open-source, puisSynced from monorepo. Il y a un fichierSOURCE_REVà la racine contenant un seul hash de révision interne. C'est un export d'un monorepo privé, re-synchronisé périodiquement — pas un dépôt développé en public et pas un que vous puissiez archéologiser pour ses décisions de conception. - Pas ouvert pour vous.
CONTRIBUTING.mddéclare sans détour que le dépôt n'accepte pas de pull requests externes ni de patchs non sollicités, que xAI développe le logiciel en interne, et que l'arbre est publié « pour la transparence des sources et les builds locaux ». Les issues GitHub sont désactivées au niveau du dépôt.
★ La distinction qui compte : Apache 2.0 est une licence, et elle vous accorde de vrais droits — lire, forker, modifier, livrer des dérivés. Elle ne dit rien sur la gouvernance. Grok Build est source-available sous une licence open source avec un modèle de développement fermé. Vous pouvez le forker ; vous ne pouvez pas l'influencer. Lisez « open source » dans les titres comme « vous pouvez lire le source », car c'est exactement et seulement ce qui est offert.
La carte des crates est la vraie leçon
Ignorez le marketing. Le listing de répertoires sous crates/codegen/ est la chose la plus utile du dépôt, car c'est un inventaire honnête de ce dont un agent de codage livré a besoin. Une sélection :
| Crate | Ce qu'il vous apprend |
|---|---|
xai-grok-agent, xai-grok-shell | Le runtime de l'agent et ses points d'entrée — interactif, stdio, headless |
xai-grok-tools, xai-grok-tools-api | Les implémentations d'outils, séparées de l'interface d'outils — une vraie frontière |
xai-grok-workspace, xai-fast-worktree | Système de fichiers, contrôle de version, exécution, checkpoints — et worktrees git rapides |
xai-codebase-graph | Compréhension structurelle d'un dépôt, pas juste du grep |
xai-grok-memory | La mémoire est un sous-système, pas une astuce de prompt |
xai-grok-mcp | MCP est une surface d'intégration de première classe |
xai-grok-hooks, xai-hooks-plugins-types | Les hooks et plugins ont leur propre couche de types |
xai-grok-subagent-resolution | Résoudre quel subagent gère quoi est assez dur pour nécessiter sa propre crate |
xai-token-estimation | Compter les tokens avant de les dépenser |
xai-hunk-tracker | Suivre les hunks de diff au fil d'une session d'édition |
xai-grok-pager, xai-ratatui-inline | La TUI — scrollback, prompts, modales, rendu inline |
xai-acp-lib | Agent Client Protocol — les éditeurs embarquent l'agent |
xai-grok-telemetry, xai-mixpanel | Télémétrie et analytics produit, comme crates de première classe |
ptyctl, xai-tty-utils, xai-grok-crash-handler | Les terminaux sont hostiles et les processus plantent |
Relisez cette liste comme un plan de build. Le modèle mental naïf d'un agent de codage est « une boucle qui appelle un modèle et lance des outils ». La décomposition réelle inclut un graphe de codebase, un sous-système de mémoire, du checkpointing, la gestion de worktrees, le suivi des hunks, la résolution de subagents, l'estimation de tokens, la gestion des plantages et une couche de contrôle PTY — avant d'écrire un seul prompt.
★ La vérification d'échelle. Simon Willison a compté 844 530 lignes de Rust dans l'arbre, seulement ~3 % de dépendances vendorisées, et a noté que le Codex d'OpenAI se situe à environ 950 933 lignes. Deux équipes indépendantes, convergeant près du million de lignes, pour « une boucle autour d'un LLM ». Si votre projet d'agent semble enfler, voici le calibrage : ce n'est pas vous, et la partie difficile n'a jamais été la boucle.
Il y a aussi une crate xai-grok-mermaid — un renderer de terminal qui dessine des diagrammes Mermaid avec des caractères Unicode de dessin de cases. Elle n'est pas importante. C'est un joli rappel que livrer du soin représente une grande fraction de tout vrai agent.
Le code du collecteur de données est encore dans l'arbre
C'est là où le dépôt cesse d'être un manuel et devient une preuve.
En juillet 2026, la capture réseau d'un chercheur a montré Grok Build téléversant des dépôts entiers — historique git complet, fichiers jamais lus, contenus de .env — vers un bucket Google Cloud Storage, par un canal sans rapport avec ce que le modèle lisait. AILmanac couvre cet incident et le mode de défaillance général dans Ce que votre agent téléverse. xAI a désactivé le comportement côté serveur et a dit que les données conservées seraient supprimées.
Le source publié contient cette machinerie. Vérifiable directement depuis le dépôt :
crates/codegen/xai-grok-shell/src/upload/gcs.rsexiste.crates/codegen/xai-file-utils/src/upload_config.rsdéfinitDEDUP_GCS_PREFIX = "repo_changes_dedup".
Cette constante est celle qui est intéressante. Le téléversement intercepté par le chercheur allait vers des chemins d'objets de la forme gs://grok-code-session-traces/repo_changes_dedup/v2/…. Le préfixe de chemin capturé sur le réseau est une constante nommée dans le propre source publié de xAI. Le même fichier définit à la fois ARCHIVE_SCHEMA_VERSION (v2) et ARCHIVE_SCHEMA_VERSION_V3 — ce qui signifie que le format d'archive avait été itéré vers une troisième version. C'était une infrastructure maintenue, pas un chemin de debug égaré.
La documentation du module dans gcs.rs est plus directe que tout communiqué de presse. Elle qualifie les helpers de téléversement de « data-collector helpers », et la raison d'être entière du fichier est un correctif d'ingénierie : faire passer des credentials conscients du rafraîchissement pour que les tokens périmés cessent de causer des POST /v1/storage 401. Quelqu'un déboguait la fiabilité du chemin de téléversement de dépôt comme travail de production.
Simon Willison rapporte que le chemin de téléversement est désormais désactivé dans l'arbre publié, renvoyant une erreur codée en dur. C'est cohérent avec la position déclarée de xAI, et nous n'avons pas pu confirmer indépendamment le mécanisme précis par recherche de code — traitez-le comme rapporté plutôt que vérifié ici.
★ Ce qu'il faut en retenir. Pas « xAI est uniquement mauvais » — la leçon plus large de la page sécurité tient : cette classe de canal existe sous une forme ou une autre dans beaucoup d'agents, et lire le source est le seul moyen de savoir. Retenez plutôt le méta-point : c'est exactement à cela que sert la transparence des sources. Vous ne pouvez pas auditer les flux de données d'un binaire en une après-midi. Vous pouvez grep un arbre publié pour bucket_url en une dizaine de secondes. La publication est vraiment précieuse précisément parce qu'elle rend greppables les parties inconfortables.
Check yourself
0/4Ce qui est vraiment réutilisable
Soyez honnête sur les contraintes avant de forker :
- Les frontières entre crates sont le produit d'une équipe bien financée livrant à de vrais utilisateurs. Cette décomposition — tools séparé de tools-api, workspace de agent, résolution de subagent comme préoccupation propre — est l'actif transférable. Copier du Rust en sortant vous rapporte bien moins que copier la forme.
- Willison note que les implémentations d'outils montrent des signes d'avoir été adaptées de produits concurrents, dont Codex, Claude et Cursor. Cela fait de la couche d'outils une référence de conception convergente : là où trois ou quatre agents ont indépendamment atterri sur le même contrat d'outil, ce contrat est probablement le bon.
- La valeur d'un arbre publié est que vous pouvez vérifier les affirmations au lieu de les croire. Grep pour les clients HTTP, les URL de bucket, les crates de télémétrie et les sites d'appel de téléversement. xai-grok-telemetry et xai-mixpanel sont des crates de première classe ici — ce n'est pas un scandale, mais c'est un fait que vous ne pouvez apprendre qu'en regardant.
- Pas de PR, pas d'issues. Si vous forkez, vous possédez votre fork pour toujours, et vous rebasez contre les exports du monorepo au calendrier de xAI. Budgétez en conséquence.
Si vous voulez explorer l'arbre sans le construire :
Cloner et cartographier la structure des crates
git clone --depth 1 https://github.com/xai-org/grok-build cd grok-build # The inventory of what a production coding agent needs ls crates/codegen/ # Where does data leave the machine? Start here, not with the README. grep -rn "bucket_url\|/v1/storage\|upload_bytes" crates/ --include=*.rs | head -30 # Which internal revision was this cut from? cat SOURCE_REV
Où il se place par rapport à ce que vous connaissez
Si vous pilotez Claude Code, Grok Build est la même catégorie d'outil avec ses entrailles exposées — lisez-le comme un second avis sur des problèmes que vous avez déjà. Comparaison des CLI d'agents de codage le situe face au reste du champ, et Grok pour les utilisateurs de Claude couvre l'écosystème xAI autour de lui.
Pour les idées d'architecture que la carte des crates suggère, voir harnesses d'agents à longue durée et architectures de mémoire d'agent — xai-grok-memory et xai-grok-subagent-resolution sont les réponses d'une équipe à exactement ces problèmes.
Et lisez Ce que votre agent téléverse à côté de cette page. Celle-là vous montre comment attraper un canal de ce genre sur le réseau avec mitmproxy et un dépôt canari. Celle-ci vous montre à quoi ça ressemble dans le source. Les deux techniques ensemble forment l'audit complet.
Sources & lectures complémentaires
- xai-org/grok-build — le dépôt lui-même :
README.md,CONTRIBUTING.md,SOURCE_REV, et l'arbrecrates/codegen/. La source primaire pour tout ce qui est structurel sur cette page. - xai-org/grok-build, now open source — la lecture de Simon Willison : les comptes de lignes, la comparaison avec Codex, le renderer Mermaid, les implémentations d'outils adaptées, et l'état du chemin de téléversement.
- Grok Build is Now Open Source — l'annonce de xAI.
- Introducing Grok Build — le billet de lancement original de la CLI.
- SpaceXAI Open-Sources Grok Build — le parcours composant par composant de MarkTechPost à travers le harness, la couche d'outils et le système d'extensions.
- Ce que votre agent téléverse — la couverture par AILmanac de la capture réseau que cette publication de source corrobore.