{"version":"https://jsonfeed.org/version/1","title":"Readable: Hacker News","home_page_url":"https://readable.news","feed_url":"https://readable.news/api/feed?format=json","icon":"https://news.ycombinator.com/y18.svg","favicon":"https://news.ycombinator.com/favicon.ico","items":[{"title":"Kimi-K3 on HuggingFace","content_html":"<div class=\"page\" id=\"readability-page-1\"><div><div> <div> <picture> <img src=\"https://huggingface.co/moonshotai/Kimi-K3/resolve/main/assets/kimi-logo.png\" width=\"30%\" alt=\"Kimi K3\"> </picture> </div> <hr> <p><a href=\"https://www.kimi.com/\" rel=\"nofollow\"><img alt=\"Chat\" src=\"https://img.shields.io/badge/%F0%9F%A4%96%20Chat-Kimi%20K3-ff6b6b?color=1783ff&logoColor=white\"></a> <a href=\"https://www.moonshot.ai/\" rel=\"nofollow\"><img alt=\"Homepage\" src=\"https://img.shields.io/badge/Homepage-Moonshot%20AI-white?logo=Kimi&logoColor=white\"></a> </p> <p><a href=\"https://huggingface.co/moonshotai\"><img alt=\"Hugging Face\" src=\"https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Moonshot%20AI-ffc107?color=ffc107&logoColor=white\"></a> <a href=\"https://twitter.com/kimi_moonshot\" rel=\"nofollow\"><img alt=\"Twitter Follow\" src=\"https://img.shields.io/badge/Twitter-Kimi.ai-white?logo=x&logoColor=white\"></a> <a href=\"https://discord.gg/TYU2fdJykW\" rel=\"nofollow\"><img alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-Kimi.ai-white?logo=discord&logoColor=white\"></a> <a href=\"https://modelscope.cn/organization/moonshotai\" rel=\"nofollow\"><img alt=\"ModelScope\" src=\"https://img.shields.io/badge/ModelScope-Moonshot%20AI-white?labelColor=rgb(99%2C%2074%2C%255)\"></a> </p> <p><a href=\"https://huggingface.co/moonshotai/Kimi-K3/blob/main/LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/badge/License-Kimi_K3-f5de53?&color=f5de53\"></a> </p> <p> 📰&#160;&#160;<a href=\"https://www.kimi.com/blog/kimi-k3\" rel=\"nofollow\">Tech Blog</a> | &#160;&#160;&#160; <b>📄&#160;&#160;<a href=\"https://github.com/MoonshotAI/Kimi-K3/blob/main/k3_tech_report.pdf\" rel=\"nofollow\">Full Report</a></b> </p> <h2> <a id=\"1-model-introduction\" href=\"https://huggingface.co/moonshotai/Kimi-K3#1-model-introduction\" rel=\"nofollow\"> </a> <span> 1. Model Introduction </span> </h2> <p>Kimi K3 is an open-weight, native multimodal agentic model and our most capable model to date. It is a 2.8T-parameter model built on Kimi Delta Attention (KDA) and Attention Residuals (AttnRes), with native vision capabilities and a 1-million-token context window. It is the world's first open 3T-class model, designed for frontier intelligence across long-horizon coding, knowledge work, and reasoning.</p> <h3> <a id=\"key-features\" href=\"https://huggingface.co/moonshotai/Kimi-K3#key-features\" rel=\"nofollow\"> </a> <span> Key Features </span> </h3> <ul> <li><strong>New Architecture</strong>: Kimi K3 is built on Kimi Delta Attention (KDA) and Attention Residuals (AttnRes), and scales up MoE sparsity with a Stable LatentMoE framework that activates 16 out of 896 experts — yielding an approximate 2.5× improvement in overall scaling efficiency over Kimi K2.</li> <li><strong>Long-Horizon Coding</strong>: Operating with minimal human oversight, Kimi K3 sustains long engineering sessions, navigates massive repositories, and orchestrates terminal tools — from GPU kernel optimization and compiler development to vision-in-the-loop game dev, CAD, and even chip design.</li> <li><strong>Agentic Knowledge Work</strong>: Kimi K3 advances end-to-end knowledge work, producing deep research with interactive visualizations, widgets and dashboards, and motion design and video editing, powered by its native multimodal architecture.</li> <li><strong>Native Multimodality &amp; Long Context</strong>: Kimi K3 understands text, images, and video within the same model, and supports a 1-million-token context window.</li> <li><strong>Open Frontier Weights</strong>: We release the full Kimi K3 model weights under the Kimi K3 License, making frontier intelligence openly available for research, deployment, and further innovation.</li> </ul> <h2> <a id=\"2-model-summary\" href=\"https://huggingface.co/moonshotai/Kimi-K3#2-model-summary\" rel=\"nofollow\"> </a> <span> 2. Model Summary </span> </h2> <div> <table> <tbody> <tr> <td><strong>Architecture</strong></td> <td>Mixture-of-Experts (MoE)</td> </tr> <tr> <td><strong>Total Parameters</strong></td> <td>2.8T</td> </tr> <tr> <td><strong>Activated Parameters</strong></td> <td>104B</td> </tr> <tr> <td><strong>Number of Layers</strong></td> <td>93</td> </tr> <tr> <td><strong>Number of Dense Layers</strong></td> <td>1</td> </tr> <tr> <td><strong>Attention-Layer Composition</strong></td> <td>69 KDA + 24 Gated MLA</td> </tr> <tr> <td><strong>Attention Hidden Dimension</strong></td> <td>7168</td> </tr> <tr> <td><strong>Number of Attention Heads</strong></td> <td>96</td> </tr> <tr> <td><strong>Latent MoE Dimension</strong></td> <td>3584</td> </tr> <tr> <td><strong>MoE Hidden Dimension</strong> (per Expert)</td> <td>3072</td> </tr> <tr> <td><strong>Number of Experts</strong></td> <td>896</td> </tr> <tr> <td><strong>Selected Experts per Token</strong></td> <td>16</td> </tr> <tr> <td><strong>Number of Shared Experts</strong></td> <td>2</td> </tr> <tr> <td><strong>Vocabulary Size</strong></td> <td>160K</td> </tr> <tr> <td><strong>Context Length</strong></td> <td>1048576</td> </tr> <tr> <td><strong>Attention Mechanism</strong></td> <td>KDA &amp; Gated MLA</td> </tr> <tr> <td><strong>Activation Function</strong></td> <td>SiTU-GLU</td> </tr> <tr> <td><strong>Vision Encoder</strong></td> <td>MoonViT-V2</td> </tr> <tr> <td><strong>Parameters of Vision Encoder</strong></td> <td>401M</td> </tr> <tr> <td><strong>Quantization</strong></td> <td>MXFP4 weights / MXFP8 activations<br>(quantization-aware training)</td> </tr> <tr> <td><strong>Modality</strong></td> <td>Text, Image</td> </tr> </tbody> </table> </div> <h2> <a id=\"3-evaluation-results\" href=\"https://huggingface.co/moonshotai/Kimi-K3#3-evaluation-results\" rel=\"nofollow\"> </a> <span> 3. Evaluation Results </span> </h2> <div> <table> <thead> <tr> <th>Benchmark</th> <th><sup>Kimi K3<br><sup>(max)</sup></sup></th> <th><sup>Claude Fable 5<br><sup>(max, w/ fallback)</sup></sup></th> <th><sup>GPT-5.6 Sol<br><sup>(max)</sup></sup></th> <th><sup>Claude Opus 4.8<br><sup>(max)</sup></sup></th> <th><sup>GPT-5.5<br><sup>(xhigh)</sup></sup></th> <th><sup>GLM-5.2<br><sup>(max)</sup></sup></th> </tr> </thead> <tbody> <tr> <td colspan=\"7\"><strong>Reasoning &amp; Knowledge</strong></td> </tr> <tr> <td>GPQA Diamond</td> <td>93.5</td> <td>92.6</td> <td>94.1</td> <td>91.0</td> <td>93.5</td> <td>91.2</td> </tr> <tr> <td>CritPt</td> <td>23.4</td> <td>28.6</td> <td>32.3</td> <td>20.9</td> <td>27.1</td> <td>20.9</td> </tr> <tr> <td>AA-LCR</td> <td>74.7</td> <td>70.0</td> <td>73.7</td> <td>67.7</td> <td>74.3</td> <td>71.3</td> </tr> <tr> <td>HLE-Full</td> <td>43.5 / 56.0</td> <td>53.3 / 63.0</td> <td>44.5 / 58.0</td> <td>49.8 / 57.9</td> <td>41.4 / 52.2</td> <td>—</td> </tr> <tr> <td colspan=\"7\"><strong>Coding</strong></td> </tr> <tr> <td>DeepSWE</td> <td>67.5</td> <td>70.0</td> <td>73.0</td> <td>59.0</td> <td>67.0</td> <td>46.2</td> </tr> <tr> <td>ProgramBench</td> <td>77.8</td> <td>76.8</td> <td>77.6</td> <td>71.9</td> <td>70.8</td> <td>63.7</td> </tr> <tr> <td>Terminal-Bench 2.1</td> <td>88.3</td> <td>88.0</td> <td>88.8</td> <td>84.6</td> <td>83.4</td> <td>82.7</td> </tr> <tr> <td>FrontierSWE</td> <td>81.2</td> <td>86.6</td> <td>71.3</td> <td>66.7</td> <td>64.9</td> <td>67.3</td> </tr> <tr> <td>SWE-Marathon</td> <td>42.0</td> <td>35.0</td> <td>39.0</td> <td>40.0</td> <td>14.0</td> <td>13.0</td> </tr> <tr> <td>PostTrainBench</td> <td>36.6</td> <td>41.4</td> <td>34.6</td> <td>34.1</td> <td>28.4</td> <td>34.3</td> </tr> <tr> <td>MLS-Bench-Lite</td> <td>48.3</td> <td>49.9</td> <td>46.2</td> <td>42.8</td> <td>35.5</td> <td>40.4</td> </tr> <tr> <td>SciCode</td> <td>58.7</td> <td>60.2</td> <td>56.1</td> <td>53.5</td> <td>56.1</td> <td>50.5</td> </tr> <tr> <td>Kimi Code Bench 2.0</td> <td>72.9</td> <td>76.9</td> <td>64.8</td> <td>71.7</td> <td>69.0</td> <td>64.2</td> </tr> <tr> <td colspan=\"7\"><strong>Agentic</strong></td> </tr> <tr> <td>BrowseComp</td> <td>91.2</td> <td>88.0</td> <td>90.4</td> <td>84.3</td> <td>84.4</td> <td>—</td> </tr> <tr> <td>DeepSearchQA (F1)</td> <td>95.0</td> <td>94.2</td> <td>—</td> <td>93.1</td> <td>—</td> <td>—</td> </tr> <tr> <td>ResearchRubrics</td> <td>76.2</td> <td>—</td> <td>73.8</td> <td>73.5</td> <td>64.0</td> <td>71.1</td> </tr> <tr> <td>GDPval-AA v2 (Elo)</td> <td>1686</td> <td>1747</td> <td>1736</td> <td>1593</td> <td>1491</td> <td>1510</td> </tr> <tr> <td>Toolathlon-Verified</td> <td>76.5</td> <td>77.9</td> <td>74.9</td> <td>76.2</td> <td>73.5</td> <td>59.9</td> </tr> <tr> <td>MCPMark-Verified</td> <td>94.5</td> <td>87.4</td> <td>92.9</td> <td>76.4</td> <td>92.9</td> <td>—</td> </tr> <tr> <td>MCP-Atlas</td> <td>84.2</td> <td>84.7</td> <td>83.6</td> <td>83.6</td> <td>82.8</td> <td>82.6</td> </tr> <tr> <td>AutomationBench</td> <td>30.8</td> <td>29.1</td> <td>29.7</td> <td>27.2</td> <td>22.7</td> <td>12.9</td> </tr> <tr> <td>JobBench</td> <td>54.3</td> <td>57.4</td> <td>45.4</td> <td>48.4</td> <td>38.3</td> <td>43.4</td> </tr> <tr> <td>AA-Briefcase (Elo)</td> <td>1548</td> <td>1583</td> <td>1495</td> <td>1354</td> <td>1158</td> <td>1260</td> </tr> <tr> <td>Agents' Last Exam</td> <td>28.3</td> <td>25.7<sup>†</sup></td> <td>29.6</td> <td>27.0</td> <td>26.6</td> <td>20.4</td> </tr> <tr> <td>APEX-Agents</td> <td>41.0</td> <td>43.3</td> <td>39.9</td> <td>39.4</td> <td>38.5</td> <td>35.6</td> </tr> <tr> <td>OfficeQA Pro</td> <td>63.3</td> <td>69.9</td> <td>63.2</td> <td>63.9</td> <td>60.9</td> <td>41.4</td> </tr> <tr> <td>SpreadsheetBench 2</td> <td>34.8</td> <td>34.7</td> <td>32.4</td> <td>31.6</td> <td>29.1</td> <td>28.1</td> </tr> <tr> <td>OSWorld-Verified</td> <td>84.8</td> <td>85.0</td> <td>83.0</td> <td>83.4</td> <td>79.0</td> <td>—</td> </tr> <tr> <td>OSWorld 2.0</td> <td>58.3</td> <td>66.1</td> <td>62.6</td> <td>55.7</td> <td>49.5</td> <td>—</td> </tr> <tr> <td>SaaS-Bench</td> <td>60.1</td> <td>—</td> <td>61.4</td> <td>56.1</td> <td>43.8</td> <td>—</td> </tr> <tr> <td>τ³-Banking</td> <td>33.4</td> <td>26.8</td> <td>33.0</td> <td>27.6</td> <td>31.3</td> <td>26.8</td> </tr> <tr> <td>Harvey Lab-AA</td> <td>94.6</td> <td>93.6</td> <td>87.2</td> <td>91.1</td> <td>86.3</td> <td>91.0</td> </tr> <tr> <td>CorpFin v2</td> <td>71.6</td> <td>71.8</td> <td>64.4</td> <td>66.7</td> <td>68.4</td> <td>66.1</td> </tr> <tr> <td>Finance Agent v2</td> <td>54.4</td> <td>56.3</td> <td>53.8</td> <td>53.9</td> <td>51.8</td> <td>49.7</td> </tr> <tr> <td>Legal Research Bench</td> <td>44.2</td> <td>49.5</td> <td>48.1</td> <td>43.8</td> <td>40.4</td> <td>31.3</td> </tr> <tr> <td colspan=\"7\"><strong>Vision</strong></td> </tr> <tr> <td>WorldVQA ForceAnswer</td> <td>51.0</td> <td>56.7</td> <td>41.8</td> <td>39.1</td> <td>38.5</td> <td>—</td> </tr> <tr> <td>OmniDocBench</td> <td>91.1</td> <td>89.8</td> <td>85.8</td> <td>87.9</td> <td>89.4</td> <td>—</td> </tr> <tr> <td>PerceptionBench</td> <td>58.5</td> <td>57.2</td> <td>59.7</td> <td>47.2</td> <td>55.8</td> <td>—</td> </tr> <tr> <td>Video-MME (w. sub)</td> <td>90.0</td> <td>—</td> <td>89.5</td> <td>86.0</td> <td>89.3</td> <td>—</td> </tr> <tr> <td>MMVU</td> <td>82.1</td> <td>—</td> <td>81.2</td> <td>79.2</td> <td>81.7</td> <td>—</td> </tr> <tr> <td>BabyVision w/ python</td> <td>85.7</td> <td>90.5</td> <td>88.9</td> <td>81.2</td> <td>83.6</td> <td>—</td> </tr> <tr> <td>MMMU-Pro</td> <td>81.6 / 83.4</td> <td>81.2 / 86.5</td> <td>83.0 / 84.6</td> <td>78.9 / 82.7</td> <td>81.2 / 83.2</td> <td>—</td> </tr> <tr> <td>CharXiv (RQ)</td> <td>84.8 / 91.3</td> <td>88.9 / 93.5</td> <td>84.6 / 89.1</td> <td>80.5 / 89.9</td> <td>84.1 / 89.0</td> <td>—</td> </tr> <tr> <td>MathVision</td> <td>94.3 / 97.8</td> <td>94.8 / 98.6</td> <td>95.8 / 97.8</td> <td>86.7 / 97.1</td> <td>92.2 / 96.8</td> <td>—</td> </tr> <tr> <td>ZeroBench (pass@5)</td> <td>23.0 / 41.0</td> <td>23.0 / 46.0</td> <td>17.0 / 35.0</td> <td>17.0 / 34.0</td> <td>22.0 / 41.0</td> <td>—</td> </tr> </tbody> </table> </div> <details> <summary><b>Footnotes</b></summary> <p>All Kimi K3 results are obtained with reasoning effort set to 'max' and temperature = 1.0. For single-step tasks, such as GPQA Diamond, HLE-Full, and vision benchmarks without tools, we set top-p = 0.95; for agentic tasks, we set top-p = 1.0. For HLE-Full, MMMU-Pro, CharXiv (RQ), MathVision, and ZeroBench, each cell reports the scores without and with tool augmentation (general tools for HLE-Full, Python for the vision benchmarks), in that order.</p> <ol> <li><strong>Reasoning &amp; knowledge benchmarks</strong><ul> <li><strong>CritPt and AA-LCR.</strong> Scores are cited from <a href=\"https://artificialanalysis.ai/\" rel=\"nofollow\">Artificial Analysis</a> as of July 23, 2026.</li> </ul> </li> <li><strong>Coding benchmarks</strong><ul> <li><strong>DeepSWE.</strong> Kimi K3 is evaluated with the Kimi Code harness. The GLM-5.2 score is taken from the <a href=\"https://z.ai/blog/glm-5.2\" rel=\"nofollow\">GLM-5.2 release blog</a>; all remaining scores are from the official <a href=\"https://deepswe.datacurve.ai/\" rel=\"nofollow\">DeepSWE leaderboard</a>, under which Kimi K3 attains 67.3 with the mini-SWE-agent harness. We report the DeepSWE v1.1 tasks.</li> <li><strong>Terminal-Bench 2.1.</strong> Kimi K3 is evaluated with the Kimi Code harness. For all other models, we report the best score across harnesses: GLM-5.2 with Claude Code (<a href=\"https://z.ai/blog/glm-5.2\" rel=\"nofollow\">GLM-5.2 release blog</a>); Claude Opus 4.8 and Claude Fable 5 with Terminus 2 (<a href=\"https://artificialanalysis.ai/evaluations/terminalbench-v2-1\" rel=\"nofollow\">Artificial Analysis</a>); GPT-5.5 and GPT-5.6 Sol with Codex (<a href=\"https://openai.com/index/previewing-gpt-5-6-sol/\" rel=\"nofollow\">OpenAI</a>).</li> <li><strong>ProgramBench.</strong> Kimi K3 is evaluated with the Kimi Code harness. The GLM-5.2 score is from the <a href=\"https://z.ai/blog/glm-5.2\" rel=\"nofollow\">GLM-5.2 release blog</a>; all other scores are from <a href=\"https://www.vals.ai/benchmarks/programbench\" rel=\"nofollow\">Vals AI</a>.</li> <li><strong>SWE-Marathon.</strong> Kimi K3, Claude Opus 4.8, and Claude Fable 5 are evaluated with the Claude Code harness; GPT-5.6 Sol is evaluated with the Codex harness. The GLM-5.2 score is from the <a href=\"https://z.ai/blog/glm-5.2\" rel=\"nofollow\">GLM-5.2 release blog</a>. Our evaluation is based on an H20-calibrated branch of the <a href=\"https://www.swe-marathon.org/\" rel=\"nofollow\">official tasks</a> as of July 9, 2026, prior to the final v1.1 release: the Docker images, performance gates, and reference oracles for the GPU tasks have been recalibrated for H20, while the correctness and anti-cheat validators remain unchanged. Additionally, Claude Fable 5 hit fallbacks on 35% of the tasks in our evaluation, which may have negatively impacted its measured performance.</li> <li><strong>FrontierSWE.</strong> Kimi K3 is evaluated with the Kimi Code harness and GPT-5.6 Sol with the Codex harness; all other results are from <a href=\"https://www.frontierswe.com/\" rel=\"nofollow\">FrontierSWE</a>. Dominance scores are recomputed from the raw scores using the official evaluation script and are current as of July 16, 2026.</li> <li><strong>PostTrainBench.</strong> Scores for GLM-5.2, GPT-5.5, and Claude Opus 4.8 are adopted from the official <a href=\"https://posttrainbench.com/\" rel=\"nofollow\">PostTrainBench</a> results. Kimi K3, Claude Fable 5, and GPT-5.6 Sol are evaluated with the official Harbor implementation at maximum reasoning effort, averaged over three runs on H20 GPUs (instead of H100 in the official setting) — Kimi K3 and Claude Fable 5 with the Claude Code harness, and GPT-5.6 Sol with the Codex harness.</li> <li><strong>MLS-Bench-Lite.</strong> Kimi K3 is evaluated with the Kimi Code harness; GLM-5.2 and the Claude models with the Claude Code harness; GPT-5.5 and GPT-5.6 Sol with the Codex harness.</li> <li><strong>SciCode.</strong> Scores are cited from <a href=\"https://artificialanalysis.ai/\" rel=\"nofollow\">Artificial Analysis</a> as of July 23, 2026.</li> <li><strong>Kimi Code Bench 2.0 (in-house).</strong> Kimi K3 is evaluated with the Kimi Code harness (it attains 73.7 with the Claude Code harness); GLM-5.2, Claude Opus 4.8, and Claude Fable 5 with the Claude Code harness; GPT-5.5 and GPT-5.6 Sol with the Codex harness. All models are evaluated at maximum reasoning effort, except GPT-5.5, which uses the \"xhigh\" setting. As the benchmark includes cybersecurity and safety-related tasks, we also disclose the fraction of refused or fallback tasks: Claude Fable 5 hit 13 fallbacks and 1 refusal out of 80 tasks; 10 refusals out of 80 tasks entered GPT-5.6 Sol's cyber guard; GPT-5.5 had 3 refusals out of 80 tasks.</li> </ul> </li> <li><strong>Agentic benchmarks</strong><ul> <li><strong>OfficeQA Pro.</strong> Each test case provides the agent with the entire PDF corpus, with all PDFs rendered as images and no machine-readable text available.</li> <li><strong>OfficeQA Pro and SpreadsheetBench 2.</strong> Kimi K3, GLM-5.2, Claude Opus 4.8, and Claude Fable 5 are evaluated with the Claude Code harness; GPT-5.5 and GPT-5.6 Sol are evaluated with the Codex harness.</li> <li><strong>MCP-Atlas.</strong> All models are evaluated on the 500-task public subset with a 100-turn limit, using Gemini 3.1 Pro as the judge.</li> <li><strong>AutomationBench.</strong> All models are evaluated on the 600-task public subset, following the official GitHub setup in all other respects.</li> <li><strong>BrowseComp.</strong> We adopt a context-compaction strategy triggered at 300K tokens. When evaluated with the full 1M-token context window and no context management, Kimi K3 achieves a score of 90.4. The results of Claude Fable 5, Claude Opus 4.8, GPT-5.6 Sol, and GPT-5.5 are cited from <a href=\"https://www.anthropic.com/news/claude-fable-5-mythos-5\" rel=\"nofollow\">Anthropic</a> and <a href=\"https://openai.com/index/gpt-5-6/\" rel=\"nofollow\">OpenAI</a>.</li> <li><strong>GDPval-AA v2, AA-Briefcase, τ³-Banking, Harvey Lab-AA, and APEX-Agents.</strong> Scores are cited from <a href=\"https://artificialanalysis.ai/\" rel=\"nofollow\">Artificial Analysis</a> and the <a href=\"https://www.mercor.com/apex/apex-agents-leaderboard/\" rel=\"nofollow\">APEX-Agents leaderboard</a> as of July 23, 2026. For Harvey Lab-AA, we report the criterion pass rate.</li> <li><strong>CorpFin v2, Finance Agent v2, and Legal Research Bench.</strong> Scores are cited from <a href=\"https://www.vals.ai/\" rel=\"nofollow\">Vals AI</a>.</li> <li><strong>Agents' Last Exam.</strong> Scores are cited from the <a href=\"https://agents-last-exam.org/leaderboard\" rel=\"nofollow\">official leaderboard</a> as of July 23, 2026; we report the leaderboard's primary pass-rate metric. On the leaderboard, each model is paired with a specific harness: Kimi K3 with Kimi Code; GPT-5.6 Sol and GPT-5.5 with Codex; Claude Fable 5, Claude Opus 4.8, and GLM-5.2 with Claude Code. <sup>†</sup> The Claude Fable 5 entry runs at xhigh effort with 40% of tasks annotated as downgraded.</li> </ul> </li> <li><strong>Multimodal benchmarks</strong><ul> <li>Except for ZeroBench, which follows the official setting and is run five times, all multimodal scores are averaged over three runs. MMMU-Pro is evaluated following the official protocol, preserving the original input order and prepending images to the text input.</li> <li><strong>PerceptionBench</strong> is an in-house benchmark that focuses on atomic visual perception capabilities.</li> </ul> </li> </ol> </details> <h2> <a id=\"4-native-mxfp4-quantization\" href=\"https://huggingface.co/moonshotai/Kimi-K3#4-native-mxfp4-quantization\" rel=\"nofollow\"> </a> <span> 4. Native MXFP4 Quantization </span> </h2> <p>Kimi K3 applies quantization-aware training from the SFT stage onward, using MXFP4 weights with MXFP8 activations for broad hardware compatibility.</p> <h2> <a id=\"5-deployment\" href=\"https://huggingface.co/moonshotai/Kimi-K3#5-deployment\" rel=\"nofollow\"> </a> <span> 5. Deployment </span> </h2> <blockquote> <p>You can access Kimi K3's API on <a href=\"https://platform.kimi.ai/\" rel=\"nofollow\">https://platform.kimi.ai</a> by selecting <code>kimi-k3</code>, and we provide OpenAI/Anthropic-compatible API for you. Currently, Kimi K3 is recommended to run on the following inference engines:</p> </blockquote> <ul> <li><a href=\"https://github.com/vllm-project/vllm\" rel=\"nofollow\">vLLM</a> — see <a href=\"https://recipes.vllm.ai/moonshotai/Kimi-K3\" rel=\"nofollow\">recipes</a></li> <li><a href=\"https://github.com/sgl-project/sglang\" rel=\"nofollow\">SGLang</a> — see <a href=\"https://docs.sglang.io/cookbook/autoregressive/Moonshotai/Kimi-K3\" rel=\"nofollow\">cookbook</a></li> <li><a href=\"https://github.com/lightseekorg/tokenspeed\" rel=\"nofollow\">TokenSpeed</a> — see <a href=\"https://lightseek.org/tokenspeed/recipes/models#kimi-k3\" rel=\"nofollow\">recipes</a></li> </ul> <hr> <h2> <a id=\"6-model-usage\" href=\"https://huggingface.co/moonshotai/Kimi-K3#6-model-usage\" rel=\"nofollow\"> </a> <span> 6. Model Usage </span> </h2> <p>Kimi K3 always has thinking enabled, and will return <code>reasoning_content</code>. Thinking effort is configured with the top-level <code>reasoning_effort</code> request field, which supports <code>\"low\"</code>, <code>\"high\"</code>, and <code>\"max\"</code> (default <code>\"max\"</code>).</p> <p>Kimi K3 was trained in the preserved thinking history mode. For multi-turn conversations and tool calls, Kimi K3 requires the complete assistant message returned by the API to be passed back to <code>messages</code> as-is — including <code>reasoning_content</code> and <code>tool_calls</code>, not just <code>content</code>:</p> <figure><pre><code><span>import</span> openai <span>def</span> <span>chat_with_preserved_thinking</span>(<span>client: openai.OpenAI, model_name: <span>str</span></span>): messages = [ { <span>\"role\"</span>: <span>\"user\"</span>, <span>\"content\"</span>: <span>\"Tell me three random numbers.\"</span> }, { <span>\"role\"</span>: <span>\"assistant\"</span>, <span>\"reasoning_content\"</span>: <span>\"I'll start by listing five numbers: 473, 921, 235, 215, 222, and I'll tell you the first three.\"</span>, <span>\"content\"</span>: <span>\"473, 921, 235\"</span> }, { <span>\"role\"</span>: <span>\"user\"</span>, <span>\"content\"</span>: <span>\"What are the other two numbers you have in mind?\"</span> } ] response = client.chat.completions.create( model=model_name, messages=messages, stream=<span>False</span>, max_tokens=<span>4096</span>, reasoning_effort=<span>\"max\"</span>, ) <span># the assistant should mention 215 and 222 that appear in the prior reasoning content</span> <span>print</span>(<span>f\"response: <span>{response.choices[<span>0</span>].message.reasoning}</span>\"</span>) <span>return</span> response.choices[<span>0</span>].message.content </code></pre></figure> <p>For full guides and examples (vision input, structured output, partial mode, tool choice, dynamic tool loading, context caching), see the <a href=\"https://platform.kimi.ai/docs/guide/kimi-k3-quickstart\" rel=\"nofollow\">Kimi K3 Quickstart</a> and <a href=\"https://platform.kimi.ai/docs/guide/use-thinking-effort\" rel=\"nofollow\">Thinking Effort</a>.</p> <h3> <a id=\"coding-agent-framework\" href=\"https://huggingface.co/moonshotai/Kimi-K3#coding-agent-framework\" rel=\"nofollow\"> </a> <span> Coding Agent Framework </span> </h3> <p>Kimi K3 works best with <a href=\"https://www.kimi.com/code\" rel=\"nofollow\">Kimi Code CLI</a> as its agent framework. We warmly invite you to give it a try — run Kimi Code in your terminal and select Kimi K3 using the <code>/model</code> command. We hope you enjoy building with Kimi K3, and we would love to hear your feedback!</p> <hr> <h2> <a id=\"7-license\" href=\"https://huggingface.co/moonshotai/Kimi-K3#7-license\" rel=\"nofollow\"> </a> <span> 7. License </span> </h2> <p>Both the code repository and the model weights are released under the <a href=\"https://huggingface.co/moonshotai/Kimi-K3/blob/main/LICENSE\" rel=\"nofollow\">Kimi K3 License</a>.</p> <hr> <h2> <a id=\"8-contact-us\" href=\"https://huggingface.co/moonshotai/Kimi-K3#8-contact-us\" rel=\"nofollow\"> </a> <span> 8. Contact Us </span> </h2> <p>If you have any questions, please reach out at <a href=\"mailto:support@moonshot.ai\" rel=\"nofollow\">support@moonshot.ai</a>.</p> </div> <section><div><dl><dt>Downloads last month</dt> <dd>99,214</dd> </dl> </div>      <h2> Model tree for <span>moonshotai/Kimi-K3</span> <a href=\"https://huggingface.co/docs/hub/model-cards#specifying-a-base-model\" target=\"_blank\"></a></h2>    <h2> Spaces using <span>moonshotai/Kimi-K3</span> <span>5</span></h2>   <h2> Collection including <span>moonshotai/Kimi-K3</span></h2>    <div data-target=\"ModelEvalResults\" data-props=\"{&quot;model&quot;:{&quot;author&quot;:&quot;moonshotai&quot;,&quot;cardData&quot;:{&quot;tags&quot;:[&quot;compressed-tensors&quot;,&quot;conversational&quot;],&quot;license&quot;:&quot;other&quot;,&quot;license_name&quot;:&quot;kimi-k3&quot;,&quot;library_name&quot;:&quot;transformers&quot;,&quot;pipeline_tag&quot;:&quot;image-text-to-text&quot;},&quot;cardExists&quot;:true,&quot;config&quot;:{&quot;architectures&quot;:[&quot;KimiK3ForConditionalGeneration&quot;],&quot;auto_map&quot;:{&quot;AutoConfig&quot;:&quot;configuration_kimi_k3.KimiK3Config&quot;,&quot;AutoModel&quot;:&quot;modeling_kimi_k3.KimiK3ForConditionalGeneration&quot;,&quot;AutoModelForCausalLM&quot;:&quot;modeling_kimi_k3.KimiK3ForConditionalGeneration&quot;},&quot;model_type&quot;:&quot;kimi_k3&quot;,&quot;tokenizer_config&quot;:{&quot;bos_token&quot;:&quot;[BOS]&quot;,&quot;eos_token&quot;:&quot;[EOS]&quot;,&quot;pad_token&quot;:&quot;[PAD]&quot;,&quot;unk_token&quot;:&quot;[UNK]&quot;}},&quot;createdAt&quot;:&quot;2026-06-13T06:42:57.000Z&quot;,&quot;discussionsDisabled&quot;:false,&quot;discussionsSorting&quot;:&quot;recently-created&quot;,&quot;downloads&quot;:99214,&quot;downloadsAllTime&quot;:99219,&quot;id&quot;:&quot;moonshotai/Kimi-K3&quot;,&quot;isLikedByUser&quot;:false,&quot;availableInferenceProviders&quot;:[{&quot;provider&quot;:&quot;fireworks-ai&quot;,&quot;modelStatus&quot;:&quot;live&quot;,&quot;providerStatus&quot;:&quot;live&quot;,&quot;providerId&quot;:&quot;accounts/fireworks/models/kimi-k3&quot;,&quot;task&quot;:&quot;conversational&quot;,&quot;adapterWeightsPath&quot;:&quot;model-00001-of-000096.safetensors&quot;,&quot;features&quot;:{&quot;structuredOutput&quot;:false,&quot;toolCalling&quot;:true},&quot;isCheapestPricingOutput&quot;:false,&quot;isFastestThroughput&quot;:false,&quot;isModelAuthor&quot;:false,&quot;tokensPerSecond&quot;:36.0954448421671},{&quot;provider&quot;:&quot;featherless-ai&quot;,&quot;modelStatus&quot;:&quot;live&quot;,&quot;providerStatus&quot;:&quot;live&quot;,&quot;providerId&quot;:&quot;moonshotai/Kimi-K3&quot;,&quot;task&quot;:&quot;conversational&quot;,&quot;adapterWeightsPath&quot;:&quot;model-00001-of-000096.safetensors&quot;,&quot;isCheapestPricingOutput&quot;:false,&quot;isFastestThroughput&quot;:false,&quot;isModelAuthor&quot;:false},{&quot;provider&quot;:&quot;together&quot;,&quot;modelStatus&quot;:&quot;live&quot;,&quot;providerStatus&quot;:&quot;live&quot;,&quot;providerId&quot;:&quot;moonshotai/Kimi-K3&quot;,&quot;task&quot;:&quot;conversational&quot;,&quot;adapterWeightsPath&quot;:&quot;model-00001-of-000096.safetensors&quot;,&quot;features&quot;:{&quot;structuredOutput&quot;:true,&quot;toolCalling&quot;:true},&quot;isCheapestPricingOutput&quot;:true,&quot;isFastestThroughput&quot;:true,&quot;isModelAuthor&quot;:false,&quot;tokensPerSecond&quot;:44.45418732550911,&quot;pricingOutput&quot;:15}],&quot;showHuggingChatEntry&quot;:true,&quot;inference&quot;:&quot;warm&quot;,&quot;lastModified&quot;:&quot;2026-07-27T16:29:18.000Z&quot;,&quot;likes&quot;:7200,&quot;pipeline_tag&quot;:&quot;image-text-to-text&quot;,&quot;library_name&quot;:&quot;transformers&quot;,&quot;librariesOther&quot;:[],&quot;trackDownloads&quot;:true,&quot;model-index&quot;:null,&quot;evalResults&quot;:[{&quot;dataset&quot;:{&quot;id&quot;:&quot;datacurve/deep-swe&quot;,&quot;isBenchmark&quot;:true,&quot;task_id&quot;:&quot;deep_swe&quot;},&quot;value&quot;:67.5,&quot;source&quot;:{&quot;url&quot;:&quot;https://huggingface.co/moonshotai/Kimi-K3&quot;,&quot;name&quot;:&quot;Model Card&quot;,&quot;isExternal&quot;:false},&quot;filename&quot;:&quot;.eval_results/deep-swe.yaml&quot;,&quot;verified&quot;:false,&quot;rank&quot;:1,&quot;label&quot;:&quot;Deep Swe&quot;},{&quot;dataset&quot;:{&quot;id&quot;:&quot;mercor/apex-agents&quot;,&quot;isBenchmark&quot;:true,&quot;task_id&quot;:&quot;apex-agents&quot;},&quot;value&quot;:41,&quot;source&quot;:{&quot;url&quot;:&quot;https://huggingface.co/moonshotai/Kimi-K3&quot;,&quot;name&quot;:&quot;Model Card&quot;,&quot;isExternal&quot;:false},&quot;filename&quot;:&quot;.eval_results/apex-agents.yaml&quot;,&quot;verified&quot;:false,&quot;rank&quot;:1,&quot;label&quot;:&quot;Apex Agents&quot;},{&quot;dataset&quot;:{&quot;id&quot;:&quot;Idavidrein/gpqa&quot;,&quot;isBenchmark&quot;:true,&quot;task_id&quot;:&quot;diamond&quot;},&quot;value&quot;:93.5,&quot;source&quot;:{&quot;url&quot;:&quot;https://huggingface.co/moonshotai/Kimi-K3&quot;,&quot;name&quot;:&quot;Model Card&quot;,&quot;isExternal&quot;:false},&quot;filename&quot;:&quot;.eval_results/gpqa.yaml&quot;,&quot;verified&quot;:false,&quot;rank&quot;:1,&quot;label&quot;:&quot;Diamond&quot;},{&quot;dataset&quot;:{&quot;id&quot;:&quot;cais/hle&quot;,&quot;isBenchmark&quot;:false,&quot;task_id&quot;:&quot;hle&quot;},&quot;value&quot;:56,&quot;source&quot;:{&quot;url&quot;:&quot;https://huggingface.co/moonshotai/Kimi-K3&quot;,&quot;name&quot;:&quot;Model Card&quot;,&quot;isExternal&quot;:false},&quot;filename&quot;:&quot;.eval_results/hle.yaml&quot;,&quot;verified&quot;:false,&quot;rank&quot;:1,&quot;label&quot;:&quot;Hle&quot;}],&quot;private&quot;:false,&quot;repoType&quot;:&quot;model&quot;,&quot;gated&quot;:false,&quot;tags&quot;:[&quot;transformers&quot;,&quot;safetensors&quot;,&quot;kimi_k3&quot;,&quot;feature-extraction&quot;,&quot;compressed-tensors&quot;,&quot;conversational&quot;,&quot;image-text-to-text&quot;,&quot;custom_code&quot;,&quot;license:other&quot;,&quot;eval-results&quot;,&quot;8-bit&quot;,&quot;region:us&quot;],&quot;tag_objs&quot;:[{&quot;id&quot;:&quot;image-text-to-text&quot;,&quot;label&quot;:&quot;Image-Text-to-Text&quot;,&quot;type&quot;:&quot;pipeline_tag&quot;,&quot;subType&quot;:&quot;multimodal&quot;},{&quot;id&quot;:&quot;transformers&quot;,&quot;label&quot;:&quot;Transformers&quot;,&quot;type&quot;:&quot;library&quot;},{&quot;id&quot;:&quot;safetensors&quot;,&quot;label&quot;:&quot;Safetensors&quot;,&quot;type&quot;:&quot;library&quot;},{&quot;id&quot;:&quot;kimi_k3&quot;,&quot;label&quot;:&quot;kimi_k3&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;feature-extraction&quot;,&quot;label&quot;:&quot;feature-extraction&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;compressed-tensors&quot;,&quot;label&quot;:&quot;compressed-tensors&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;conversational&quot;,&quot;label&quot;:&quot;conversational&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;custom_code&quot;,&quot;label&quot;:&quot;custom_code&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;eval-results&quot;,&quot;label&quot;:&quot;Eval Results&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;8-bit&quot;,&quot;label&quot;:&quot;8-bit precision&quot;,&quot;type&quot;:&quot;other&quot;,&quot;clickable&quot;:true},{&quot;id&quot;:&quot;license:other&quot;,&quot;label&quot;:&quot;other&quot;,&quot;type&quot;:&quot;license&quot;},{&quot;type&quot;:&quot;region&quot;,&quot;label&quot;:&quot;🇺🇸 Region: US&quot;,&quot;id&quot;:&quot;region:us&quot;}],&quot;transformersInfo&quot;:{&quot;auto_model&quot;:&quot;AutoModel&quot;,&quot;custom_class&quot;:&quot;modeling_kimi_k3.KimiK3ForConditionalGeneration&quot;,&quot;pipeline_tag&quot;:&quot;feature-extraction&quot;},&quot;widgetData&quot;:[{&quot;text&quot;:&quot;Hi, what can you help me with?&quot;},{&quot;text&quot;:&quot;What is 84 * 3 / 2?&quot;},{&quot;text&quot;:&quot;Tell me an interesting fact about the universe!&quot;},{&quot;text&quot;:&quot;Explain quantum computing in simple terms.&quot;}],&quot;safetensors&quot;:{&quot;parameters&quot;:{&quot;F32&quot;:11122432,&quot;BF16&quot;:57179884544,&quot;U8&quot;:2722740830208},&quot;total&quot;:2779931837184,&quot;sharded&quot;:true,&quot;totalFileSize&quot;:1560995855544},&quot;hasBlockedOids&quot;:false,&quot;region&quot;:&quot;us&quot;,&quot;isQuantized&quot;:false,&quot;licenseFilePath&quot;:&quot;LICENSE&quot;}}\"> <h2> Evaluation results <a target=\"_blank\" href=\"https://huggingface.co/docs/hub/eval-results\"></a> </h2>   </div> </section></div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fhuggingface.co%2Fmoonshotai%2FKimi-K3\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"We’re on a journey to advance and democratize artificial intelligence through open source and open science.","image":"https://cdn-thumbnails.huggingface.co/social-thumbnails/models/moonshotai/Kimi-K3.png","authors":[{"name":null,"url":"https://huggingface.co/moonshotai/Kimi-K3"}],"id":"49065752","url":"https://huggingface.co/moonshotai/Kimi-K3","external_url":"https://news.ycombinator.com/item?id=49065752","date_published":"2026-07-27T06:18:10Z"},{"title":"US citizen charged after GrapheneOS phone wipes during airport search","content_html":"<div class=\"page\" id=\"readability-page-1\"><p> Serving tech enthusiasts for over 25 years. <br> TechSpot means tech analysis and advice <a href=\"https://www.techspot.com/ethics.html\" target=\"_blank\">you&#160;can&#160;trust</a>. </p><div> <p id=\"why-it-matters\"><strong>A hot potato:</strong> A federal case in Atlanta is raising questions about a privacy-focused mobile operating system, with prosecutors arguing that its features were used to erase evidence. The US Department of Justice is attempting to prosecute Atlanta resident Sam Tunick under a federal statute that makes it a crime to destroy property in an effort to prevent it from being seized. </p> <p>The case centers on Tunick's use of <a href=\"https://www.techspot.com/downloads/7893-grapheneos.html\">GrapheneOS</a>, an open-source operating system that works on Google Pixel phones and lets users enter a passcode to wipe a device clean.</p> <p>Experts said the legal approach is <a href=\"https://www.theguardian.com/us-news/2026/jul/23/cop-city-protester-phone\">unusual</a> and may be the first time the law has been aimed at an operating system. \"It's concerning – and sends the message that [GrapheneOS] is criminal by default,\" said Christophe Boutry, a cybersecurity and surveillance expert. Boutry and Bill Buddington, senior staff technologist at the Electronic Frontier Foundation, both said they had not seen a similar case.</p> <p>The incident began at Hartsfield-Jackson Atlanta International Airport on January 24 of last year. Tunick had just returned from a trip to the Dominican Republic when he was stopped for questioning. According to court testimony, federal agents had already circulated his name and photo internally, saying he was under investigation for \"suspected terrorism activities\" because of his alleged association with the movement against Cop City.</p> <p><a href=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5.jpg\" target=\"_blank\" data-fancybox-on-demand=\"this-gallery\"><picture><source type=\"image/webp\" data-srcset=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j_500.webp 500w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j_1100.webp 1100w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j.webp 2528w\" data-sizes=\"(max-width: 960px) 100vw, 680px\"><img srcset=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j_500.webp 500w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j_1100.webp 1100w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j.webp 2528w\" height=\"1684\" src=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5.jpg\" width=\"2528\" alt data-src=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5.jpg\" data-srcset=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j_500.webp 500w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j_1100.webp 1100w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-5-j.webp 2528w\" sizes=\"(max-width: 960px) 100vw, 680px\"></picture></a></p> <p>Tunick was taken to a secondary screening room, where multiple agents questioned him. A motion filed by his defense argues the interrogation focused on child sexual abuse material as a pretext for investigating his connections to the protest movement. The motion also states that Tunick asked four times to speak with a lawyer and was denied each time. According to the same filing, agents did not present a warrant or read him his rights.</p> <p>Government attorneys and agents pushed back during Monday's hearing. They described the encounter as a routine airport inspection. Larry Findley, a Customs and Border Protection officer, said agents were \"looking for anything that's prohibited.\"</p> <p>During the questioning, agents repeatedly asked Tunick to unlock his phone and warned they would seize it if he refused. When he finally provided a passcode, the phone appeared to restart. The defense motion states that \"the screen went blank, flashed several times, and the phone appeared to restart,\" resulting in the loss of data.</p> <p>The wipe is now central to the case. Prosecutors are treating it as an intentional act to destroy evidence, while the defense argues that the search violated Tunick's constitutional rights and that the evidence should be suppressed.</p> <p>The case raises questions about which constitutional rights apply at US borders, including international airports, where authorities have broader search powers. A judge is not expected to rule on the defense motion until at least late October.</p> <p><a href=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2.jpg\" target=\"_blank\" data-fancybox-on-demand=\"this-gallery\"><picture><source type=\"image/webp\" data-srcset=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j_500.webp 500w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j_1100.webp 1100w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j.webp 2353w\" data-sizes=\"(max-width: 960px) 100vw, 680px\"><img srcset=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j_500.webp 500w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j_1100.webp 1100w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j.webp 2353w\" height=\"1600\" src=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2.jpg\" width=\"2353\" alt data-src=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2.jpg\" data-srcset=\"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j_500.webp 500w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j_1100.webp 1100w, https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-2-j.webp 2353w\" sizes=\"(max-width: 960px) 100vw, 680px\"></picture></a></p> <p>GrapheneOS is designed to improve privacy and security on Pixel phones. Supporters say those tools are legitimate security protections, not evidence of criminal intent. Boutry pointed to France and Spain, where authorities have struggled to gain access to secured devices. He said authorities have treated the use of GrapheneOS itself as suspicious. In Catalonia, Spain, police have been profiling people carrying Pixel phones, assuming they have GrapheneOS installed and are drug dealers or gang members.</p> <p>\"The main goal [of the operating system] is protection of privacy,\" Boutry said. \"They're our phones and the state can't tell us how to use them.\"</p> <p>The case is tied to ongoing opposition to Cop City, a $109 million police training facility that opened last spring. The project has drawn opposition from activists concerned about police militarization and environmental impacts. Law enforcement officials have defended it as necessary for training and recruitment.</p> <p>Previous attempts to prosecute protesters at the state level have foundered, while federal authorities have more recently stepped in, including a separate indictment announced last month.</p> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fwww.techspot.com%2Fnews%2F113236-us-prosecutors-charge-atlanta-man-after-grapheneos-phone.html\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"The case centers on Tunick's use of GrapheneOS, an open-source operating system that works on Google Pixel phones and lets users enter a passcode to wipe a...","image":"https://www.techspot.com/images2/news/bigimage/2026/07/2026-07-26-image-4.jpg","authors":[{"name":"TechSpot","url":"https://www.techspot.com/news/113236-us-prosecutors-charge-atlanta-man-after-grapheneos-phone.html","avatar":"https://www.techspot.com/images/favicon30.ico"}],"id":"49063022","url":"https://www.techspot.com/news/113236-us-prosecutors-charge-atlanta-man-after-grapheneos-phone.html","external_url":"https://news.ycombinator.com/item?id=49063022","date_published":"2026-07-26T22:21:41Z"},{"title":"Kill The Cookie Banner","content_html":"<div class=\"page\" id=\"readability-page-1\"><div> <div> <h2>Stop the tracking circus.</h2> <p>Tired of misleading cookie banners? The EU Commission has finally proposed a solution: set your privacy preferences in the browser once, and never see another banner. Unfortunately, the tracking industry is pushing back – and so far, they’ve been successful. We need YOUR help to <strong>#KillTheCookieBanner</strong>!</p> </div> <figure><img width=\"1003\" height=\"717\" fetchpriority=\"auto\" src=\"https://wordpress-cookiebanner.noyb.eu/wp-content/uploads/2026/07/header.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/header.png 1003w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-300x214.png 300w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-768x549.png 768w\" sizes=\"(max-width: 1003px) 100vw, 1003px\"></figure> </div><div id=\"FAQ\"> <figure><img width=\"1176\" height=\"666\" fetchpriority=\"auto\" src=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-1.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-1.png 1176w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-1-300x170.png 300w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-1-1024x580.png 1024w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/header-1-768x435.png 768w\" sizes=\"(max-width: 1176px) 100vw, 1176px\"></figure> <div> <div> <h3><strong>Cookie banners are made to trick you into waiving your rights</strong></h3> <p>You may think that EU privacy law requires cookie banners. But the law is clear: online tracking is prohibited by default.</p> <p>Therefore, the tracking industry needs you to waive your rights. That’s why they<strong> </strong>invented cookie banners, which often are deliberately misleading as well as annoying.</p> <p>This results in up to 90% of people saying “YES” – even though only around 3% actually want to be tracked online. This system is broken by design.</p> </div> <div> <figure><img width=\"538\" height=\"268\" fetchpriority=\"auto\" src=\"https://wordpress-cookiebanner.noyb.eu/wp-content/uploads/2026/07/11.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/11.png 538w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/11-300x149.png 300w\" sizes=\"(max-width: 538px) 100vw, 538px\"></figure> </div> </div> <div> <div> <figure><img width=\"830\" height=\"352\" src=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/2-1.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/2-1.png 830w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/2-1-300x127.png 300w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/2-1-768x326.png 768w\" sizes=\"(max-width: 830px) 100vw, 830px\"></figure> </div> <div> <h3><strong>The solution: automatically communicate your privacy preference</strong></h3> <p>In Autumn 2025, as part of <a href=\"https://killthecookiebanner.eu/#disclaimer\" data-type=\"internal\" data-id=\"#disclaimer\">a bigger legal reform</a>*, the EU Commission finally proposed a solution to the cookie banner problem: automated signals that would communicate your privacy preferences between your device and websites or apps. You could then choose whether you want to accept, refuse, or limit tracking.</p> <p>This idea is neither new nor complex. Your browser already automatically signals other preferences to websites, for example your preferred language. In some US states, such signals for privacy preferences are already legally supported.</p> </div> </div> <figure><img width=\"619\" height=\"365\" fetchpriority=\"auto\" src=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/3.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/3.png 619w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/3-300x177.png 300w\" sizes=\"(max-width: 619px) 100vw, 619px\"></figure> <div> <div> <h3><strong>The tracking lobby fights to keep the cookie banner</strong></h3> <p>This would be a simple solution. But the tracking industry seems afraid that if you can express your preferences efficiently, it could result in lower consent rates for tracking.</p> <p>Following lobbying efforts spearheaded by Google and the tracking industry, several Member States are now blocking the EU Commission’s proposal to get rid of the cookie banner.</p> <p>But not only that: industry groups are also lobbying the European Parliament to reject the proposal.</p> </div> <div> <figure><img width=\"619\" height=\"365\" fetchpriority=\"auto\" src=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/3.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/3.png 619w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/3-300x177.png 300w\" sizes=\"(max-width: 619px) 100vw, 619px\"></figure> </div> </div> <div> <div> <figure><img width=\"595\" height=\"350\" src=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/41.png\" alt srcset=\"https://killthecookiebanner.eu/wp-content/uploads/2026/07/41.png 595w, https://killthecookiebanner.eu/wp-content/uploads/2026/07/41-300x176.png 300w\" sizes=\"(max-width: 595px) 100vw, 595px\"></figure> </div> <div> <h3><strong>We need YOUR help!</strong></h3> <p>That’s where you come in: the fight to kill the cookie banner is far from over. The Member States and the European Parliament have not yet decided on their position on the issue yet.</p> <p>You can take action by contacting your representative in the European Parliament or in your Member State and express your frustration.</p> </div> </div> <p>*This proposal for privacy signals is part of an EU law reform called the Digital Omnibus. Most other parts of this reform are problematic and would weaken people’s rights. We want to make clear that we do not support these other aspects of the proposed reform.</p> <p>*This proposal for privacy signals is part of an EU law reform called the Digital Omnibus. Most other parts of this reform are problematic and would weaken people’s rights. We want to make clear that we do not support these other aspects of the proposed reform.</p> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fkillthecookiebanner.eu%2F\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"Tired of misleading cookie banners? The EU Commission has finally proposed a solution: set your privacy preferences in the browser once, and never see another banner. Unfortunately, the tracking industry is pushing back – and so far, they’ve been successful. We need YOUR help to #KillTheCookieBanner!","image":"https://killthecookiebanner.eu/wp-content/uploads/2026/07/kill-the-cookie-banner-logo.png","authors":[{"name":null,"url":"https://killthecookiebanner.eu/","avatar":"https://killthecookiebanner.eu/wp-content/uploads/2026/07/cropped-Logo-32x32.png"}],"id":"49057175","url":"https://killthecookiebanner.eu/","external_url":"https://news.ycombinator.com/item?id=49057175","date_published":"2026-07-26T11:53:17Z"},{"title":"Our position on open-weights models","content_html":"<div class=\"page\" id=\"readability-page-1\"><div><article><div data-theme=\"ivory\"><p><em>A post by Dario Amodei, Anthropic CEO</em></p><p>Over the last few days there has been a lot of discussion about open-weights models, especially those from China. Reports suggest that some US officials are <a href=\"https://www.axios.com/2026/07/20/ai-us-china-open-source-kimi\">considering banning</a> the use of Chinese open-weights models by US companies. In response, many tech companies have signed <a href=\"https://x.com/JensenHuang/status/2080643682408321103\">a letter</a> supporting open-weights models, and some people have even accused Anthropic of wanting to ban open-weights models as a means of protecting our business. Anyone who has read my past writing should know that I don’t regard such bans as a useful measure, but let me state it clearly so that there is no doubt: <strong>Anthropic has never advocated for a ban on open-weights models.</strong></p><p>Open-weights models that don’t have dangerous capabilities are a public good: they don’t cost anything besides the compute needed to run them, and they provide value to businesses, developers, and researchers.</p><p>Protectionist bans would not address my most serious national security concerns. Specifically, I am worried about two nightmare scenarios. I laid these out in my essay <a href=\"https://darioamodei.com/essay/the-adolescence-of-technology\"><em>The Adolescence of Technology</em></a> six months ago<sup>1</sup>, and have held these positions consistently for many years:</p><ol><li>My primary concern is the risk that authoritarian governments—not solely the Chinese Communist Party (CCP), although the CCP is clearly the most capable threat—build AI models that are more powerful than those built by the US, and use them to achieve permanent military superiority or perpetrate incredibly deep repression of their own people. This concern is widely shared within the US government: Vice President Vance <a href=\"https://www.presidency.ucsb.edu/documents/remarks-the-vice-president-the-artificial-intelligence-action-summit-paris-france\">warned</a> in Paris last year that “authoritarian regimes have stolen and used AI to strengthen their military, intelligence, and surveillance capabilities,” and the Intelligence Community’s <a href=\"https://www.dni.gov/files/ODNI/documents/assessments/ATA-2026-Unclassified-Report.pdf\">2026 Annual Threat Assessment</a> found that “other global powers’ robust progress in AI is challenging US economic competitiveness and national security advantages.” It is irrelevant whether these models are released with open weights, and certainly irrelevant whether they are used by US businesses. In fact, the most dangerous model may be one that is trained in secret and handed only to the People’s Liberation Army for use in drones and the Ministry of State Security for surveillance and repression.</li><li>My secondary concern is the risk that powerful AI models may be misused to carry out cyberattacks or biological attacks, and may have <a href=\"https://time.com/article/2026/07/24/openai-hugging-face-attack/\">serious alignment problems</a>. Open-weights models—it does not matter whether they come from China or anywhere else—do potentially present a higher risk than closed models, because it is very difficult to apply guardrails to them or monitor their usage, and once weights are released they cannot be withdrawn<sup>2</sup>. But banning the use of these models by US businesses does nothing to address this risk, because bad actors are unlikely to be legitimate US businesses. It <em>would</em> protect US AI companies from competition, but that has never been my goal.</li></ol><p>To address these concerns, I <em>do</em> support the following three measures, which I and Anthropic have consistently advocated for:</p><ul><li><strong>We should not sell powerful chips or chipmaking equipment to China</strong>, and we should crack down on the rampant <a href=\"https://www.justice.gov/opa/pr/three-charged-conspiring-unlawfully-divert-cutting-edge-us-artificial-intelligence\">smuggling</a><sup>3</sup> and workarounds used to obtain access to such chips. China has limited domestic production capacity, and therefore, due to the <a href=\"https://arxiv.org/abs/2001.08361\">scaling laws</a>, cannot build more powerful models than the US without US chips. This is the most efficient and direct way to block threat #1, and by hampering the training of models that are out of reach of US law, it also indirectly helps with threat #2.</li><li><strong>We should crack down on industrial-scale <a href=\"https://www.anthropic.com/news/detecting-and-preventing-distillation-attacks\">distillation operations</a>.</strong> Distillation is a much more compute-efficient process than training models from scratch. It allows China to build much better models than its number of chips would ordinarily enable, and thus partially evade chip bans. Distillation does not allow the CCP to obtain equivalent or superior AI capabilities to the US, but it can bring the Chinese frontier to within a <a href=\"https://www.anthropic.com/research/2028-ai-leadership\">few months </a>of the US frontier. It is true that many of the companies carrying out these operations release open-weights models—but the open weights are far less relevant than the fact that the operations are backed by an authoritarian state seeking to overtake the US at the frontier. We should have policy interventions to deter this behavior. A blanket ban on open-weights models is neither the correct remedy nor something we have called for<sup>4</sup>.</li><li><strong>All sufficiently capable models, open and closed, should go through mandatory safety testing.</strong> The best way to address threat #2 is to just directly test models for cyber, biological, and alignment risks before release. I think this idea is actually close to a consensus: I have been heartened both that the Trump administration has moved in this direction in recent months, and by <a href=\"https://demishassabis.substack.com/p/a-framework-for-frontier-ai-and-the-dawning-of-a-new-age\">recent industry proposals</a> that would apply such testing to the most capable models regardless of their country of origin or whether they are open or closed (while exempting less capable models, such as those from startups and academia, entirely). Whether open models do or don’t pose an increased risk, and whether that risk can be mitigated, is something that should emerge from testing, rather than be decided in advance—and there may be promising methods for improving the safety of open-weights models, including recent research from Anthropic on <a href=\"https://alignment.anthropic.com/2026/modular-pretraining/\">modular training strategies</a>. Note that to be effective, testing would need to be global, which means even the CCP would need to be on board. I think this may actually be possible: as I wrote in <em>The Adolescence of Technology</em>, limited cooperation around preventing AI biological weapons may be possible because it is in China’s interest too.</li></ul><p>This brings me to the <a href=\"https://images.nvidia.com/pdf/Open-Weights-and-American-AI-Leadership.pdf\">open letter</a>. I agree with much of it: open weights expand access to the AI economy, they strengthen competition at least for some use cases, and they give customers greater control. Concerns about distillation should be addressed through targeted legal and commercial frameworks—the same measure I described above. But I don’t agree with the letter’s assertions that open-weights models necessarily make it easier to develop safeguards or that broad access to capabilities necessarily helps defenders more than attackers. It seems at least as likely to me that the opposite will be true. For example, I worry that biology will have a strong attacker-defender asymmetry, where sufficiently capable models may be able to quickly weaponize pandemic-level viruses with widely available materials, whereas defense against these agents is a multi-year operational task in the best case (as we saw with Operation Warp Speed)<sup>5</sup>. Questions like this should be empirically answered by rigorous pre-release testing, not assumed in advance.</p><p>To summarize my and Anthropic’s position, we have not and are not advocating for a ban on open-weights models as a category. We should instead focus on keeping powerful chips out of authoritarian hands, stopping industrial-scale distillation, and requiring safety testing of all sufficiently capable models, open and closed.</p></div></article></div><div data-theme=\"ivory\"><p></p><h2>Related content</h2><p></p><div><div><h3>Cognizant and Anthropic expand their partnership to bring Claude to enterprise clients</h3><p><a href=\"https://www.anthropic.com/news/cognizant-anthropic\" referrerpolicy=\"no-referrer-when-downgrade\"><span>Read more</span><span><svg width=\"20\" height=\"20\" viewbox=\"0 0 21 21\"><path d=\"M4.14585 9.87492L14.4584 9.87492L9.60419 5.04158L10.5 4.14575L16.8542 10.4999L10.5 16.8541L9.60419 15.9583L14.4584 11.1249L4.14585 11.1249L4.14585 9.87492Z\" fill=\"currentColor\"/></svg></span></a></p></div><div><h3>Introducing Claude Opus 5</h3><p>Opus 5 is a step change improvement for the Opus tier powering long-running agents while delivering improvements in coding and professional work.</p><p><a href=\"https://www.anthropic.com/news/claude-opus-5\" referrerpolicy=\"no-referrer-when-downgrade\"><span>Read more</span><span><svg width=\"20\" height=\"20\" viewbox=\"0 0 21 21\"><path d=\"M4.14585 9.87492L14.4584 9.87492L9.60419 5.04158L10.5 4.14575L16.8542 10.4999L10.5 16.8541L9.60419 15.9583L14.4584 11.1249L4.14585 11.1249L4.14585 9.87492Z\" fill=\"currentColor\"/></svg></span></a></p></div><div><h3>A research agenda for the Economic Futures Research Fund</h3><p>We’re sharing the research agenda for the Anthropic Economic Futures Research Fund.</p><p><a href=\"https://www.anthropic.com/news/economic-futures-research-fund-agenda\" referrerpolicy=\"no-referrer-when-downgrade\"><span>Read more</span><span><svg width=\"20\" height=\"20\" viewbox=\"0 0 21 21\"><path d=\"M4.14585 9.87492L14.4584 9.87492L9.60419 5.04158L10.5 4.14575L16.8542 10.4999L10.5 16.8541L9.60419 15.9583L14.4584 11.1249L4.14585 11.1249L4.14585 9.87492Z\" fill=\"currentColor\"/></svg></span></a></p></div></div></div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fwww.anthropic.com%2Fnews%2Fposition-open-weights-models\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"Anthropic CEO Dario Amodei on open-weights models","image":"https://cdn.sanity.io/images/4zrzovbb/website/62993bb857986e2808c2a75024f384e7b85312b6-2400x1254.png","authors":[{"name":null,"url":"https://www.anthropic.com/news/position-open-weights-models","avatar":"https://www.anthropic.com/favicon.ico"}],"id":"49076057","url":"https://www.anthropic.com/news/position-open-weights-models","external_url":"https://news.ycombinator.com/item?id=49076057","date_published":"2026-07-27T22:03:49Z"},{"title":"PGSimCity - How PostgreSQL Works","content_html":"<div class=\"page\" id=\"readability-page-1\"><div data-analytics-panel=\"boot\" id=\"boot\"> <p> PGSimCity is an independent, non-commercial educational visualization of PostgreSQL internals. It is not affiliated with, sponsored, endorsed, or approved by Electronic Arts Inc. SimCity is a trademark of Electronic Arts Inc. </p> <p>A working model of the PostgreSQL engine</p> <p id=\"boot-status\">loading the city code…</p> <p> <strong>Early, unreviewed prototype.</strong> It almost certainly contains inaccuracies in both the model and explanations. Found one? <a href=\"https://github.com/NikolayS/PGSimCity/issues/new\" target=\"_blank\" rel=\"noopener\">Open an issue</a> or send a <a href=\"https://github.com/NikolayS/PGSimCity/pulls\" target=\"_blank\" rel=\"noopener\">pull request</a>. </p> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fnikolays.github.io%2FPGSimCity%2F\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"An independent, non-commercial educational visualization of PostgreSQL internals. Not affiliated with Electronic Arts.","image":"https://nikolays.github.io/PGSimCity/og.png","authors":[{"name":"PGSimCity","url":"https://nikolays.github.io/PGSimCity/","avatar":"https://nikolays.github.io/PGSimCity/favicon.svg"}],"id":"49063754","url":"https://nikolays.github.io/PGSimCity/","external_url":"https://news.ycombinator.com/item?id=49063754","date_published":"2026-07-27T00:19:04Z"},{"title":"AI companies are shredding rare books","content_html":"<div class=\"page\" id=\"readability-page-1\"><div><p><span>🦔AI companies are bulk-buying rare books, scanning them through high-speed machines that cut the spines off, and shredding the originals. A service called ISBNdb facilitates orders of up to a million books and keeps buyers anonymous. Pre-2022 books are premium because they're free of AI-generated text. A federal judge ruled the practice is fair use because eliminating the original means only one copy exists at a time. Anthropic hired the former head of Google Books partnerships to obtain \"all the books in the world.\" My Take This got to me. A bookseller told 404 Media that rare books with almost no surviving copies are being fed into this pipeline. Books that survived wars, fires, and centuries of handling are being shredded so an AI can learn to write a better marketing email. ISBNdb's website literally says \"'AI company destroys two million books' is not a headline that generates sympathy,\" and they still built an entire business around making it happen quietly. They offer NDAs as a feature. They coach clients to call it \"digital preservation.\" I've covered AI companies scraping the internet, torrenting libraries, and stealing music. This is worse because it's irreversible. You can re-upload a website. You can reprint a bestseller. You can't replace the last three copies of an 18th-century botanical text once someone shreds them for training data. And the judge said it's legal. So it's going to accelerate. \"We shred rare books and offer NDAs so nobody finds out\" is a legitimate business model in 2026. What a timeline. Hedgie🤗</span></p></div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Ftwitter.com%2FHedgieMarkets%2Fstatus%2F2081534588485296565\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"🦔AI companies are bulk-buying rare books, scanning them through high-speed machines that cut the spines off, and shredding the originals. A service called ISBNdb facilitates orders of up to a million books and keeps buyers anonymous. Pre-2022 books are premium because they're","image":"https://pbs.twimg.com/media/HOMX3t1XYAA3Pr7.jpg:large","authors":[{"name":"X (formerly Twitter)","url":"https://twitter.com/HedgieMarkets/status/2081534588485296565","avatar":"https://twitter.com/favicon.ico"}],"id":"49068738","url":"https://twitter.com/HedgieMarkets/status/2081534588485296565","external_url":"https://news.ycombinator.com/item?id=49068738","date_published":"2026-07-27T12:32:12Z"},{"id":"49057241","url":"https://swag.htmx.org/en-cad/products/htmx-4-the-game","external_url":"https://news.ycombinator.com/item?id=49057241","title":"Htmx 4.0, the first JavaScript library to release exclusively on the Game Boy","date_published":"2026-07-26T12:00:11Z"},{"id":"49051120","url":"https://didtheyghostyou.com/","external_url":"https://news.ycombinator.com/item?id=49051120","title":"Did they ghost you?","date_published":"2026-07-25T20:18:03Z"},{"title":"How is the Bun rewrite in Rust going?","content_html":"<div class=\"page\" id=\"readability-page-1\"><div aria-label=\"Content\"> <article itemscope itemtype=\"http://schema.org/BlogPosting\"> <div itemprop=\"articleBody\"> <p>I think it’s important to be very Canny when someone makes a claim that supports a company’s large valuation.</p> <p>The Bun rewrite seems well positioned as proof-positive that AI and specifically Anthropic’s AI can do the work of open-source maintainers, for some money, but faster.</p> <p><img src=\"https://lockwood.dev/assets/img/rust_rewrite/slop.png\" alt=\"image\"></p> <p>On the 8th of July 2026 Jarred Summner of Bun fame posted about <a href=\"https://bun.com/blog/bun-in-rust\">“Rewriting Bun in Rust”</a>. At the time, I felt pretty Canny, having already read about Anthropic’s C compiler and Cursor’s FastRender web browser. It seems like there is a lot of valuation money riding on the coding capabilities of AI, and a lot of marketing about those capabilities.</p> <p>It’s not a huge stretch to link the acquisition of Bun by Anthropic with the choice to rewrite Bun with an Anthropic tool. In his article Jarred claims that over 11 days (between 3rd and 14th May 2026) and at a cost of $165,000 for Anthropic API calls the rewrite was done and then merged to <code>main</code>. This represents a cost of $15,000 dollars a day, a cost well outside the means of many open source maintainers. This number doesn’t seem to include the leviathan whirring of the CI/CD in the org’s Buildkite cluster, which appears to have been constantly whirring ever since the “rewrite” was “completed”.</p> <p>Why do I put those two words in scare quotes?</p> <p>Well, on the 9th of July a peer of mine in a group chat said something unsurprising given our current environment - breathlessly proclaiming that the era of AI had emerged, and its herald was the “Rewriting Bun in Rust” blog post. So, I decided to look into this. Since the 9th I’ve been having a closer look at the claims and the code, and today I cloned the Bun repo:</p> <p><code>Receiving objects: 100% (1200304/1200304), 1.23 GiB | 11.97 MiB/s, done.</code></p> <p>As of today, the 27th of July 2026, a six week period after the rewrite was merged to main, there’s still no release tag. It’s now been 11 weeks since the last Bun release tag:</p> <div><figure><pre><code>2026-05-12 15:12:49 -0700 (tag: bun-v1.3.14) </code></pre></figure></div> <p>The last time there wasn’t a Bun release in a month was between the 26th of October 2022 and the 7th of December 2022 when there was a gap of six weeks and November was skipped, between v0.2.2 and v0.3.0:</p> <div><figure><pre><code>2022-12-07 00:37:40 -0800 (tag: bun-v0.3.0) 2022-10-26 21:06:02 -0700 (tag: bun-v0.2.2) </code></pre></figure></div> <p>On the 9th of July, the number of <a href=\"https://github.com/oven-sh/bun/pulls/robobun\">open pull requests from robobun</a> (a proxy for PRs made by claude code) was 1277. As of this moment, on the 27th of July that number is 2475 open PRs. I don’t claim to know for sure but as far as I can see the process of merging to main with Buildkite checks completed seems to take 40-ish minutes (sometimes it looks like it takes up to an hour and a half). At this rate if we want to merge all the open Claude PRs it’ll only take running the pipeline for 86 days, continuously.</p> <p>Generously, some of these PRs don’t deal with Rust code. Further investigation was warranted. I initially clicked through some of the PRs and found some <a href=\"https://github.com/oven-sh/bun/pull/34660\">extremely</a> <a href=\"https://github.com/oven-sh/bun/pull/28932\">reviewed</a> <a href=\"https://github.com/oven-sh/bun/pull/34467\">ones</a>.</p> <p>At this point I began to suspect that much of the cost of the rewrite was off the books. While $15k a day in tokens widened my eyes a little (and maybe I’m naive, maybe that’s low), I hadn’t seen the numbers for the CI/CD costs of Buildkite, and as you might have noticed from <a href=\"https://github.com/oven-sh/bun/pull/34660\">above</a>, some PRs were written by Anthropic employees. When I did analysis of the data it became clear to me that the project was ticking along with more Claude credits and more Anthropic employee involvement:</p> <p><img src=\"https://lockwood.dev/assets/img/rust_rewrite/Figure_1.png\" alt=\"image\"></p> <p>One of the assumptions I’ve made here is that Jarred Summner’s commits during the rewrite were using Claude.</p> <p>It’s pretty clear that there was a big spike in Claude usage when the rewrite began. It seems like, now, Anthropic employee and Robobun involvement in Rust is ramping up:</p> <p><img src=\"https://lockwood.dev/assets/img/rust_rewrite/Figure_2.png\" alt=\"image\"></p> <p>It’s nice to see that the Anthropic employees involved seemed to have a good work-life balance, taking breaks on the weekend. But, it looks like that period is over. It seems like we’re ramping up to something, and there’s still no release tag.</p> <p>What’s pretty obvious to me is that we can’t take it at face value that the rewrite is “done” or that it was “done” for $165k USD. The Bun team never made that claim, but I’ve seen and heard those breathless claims that the rewrite is proof of <em>something</em>, and I do still think we need to be Canny about claims that support a large valuation. Anthropic is dogfooding this, the machine is still ticking along, and Anthropic employees are directly involved. If we imagine that the rewrite is still costing $10k a day, we’re approaching $800k in money spent on this rewrite.</p> <p>—</p> <p>I’m not a primitivist when it comes to AI. Work I’ve done on ML and AI has been some of the work I’ve been most proud of. This current hype cycle is, however, the worst I’ve ever seen the hype get. Back in 2015 I had to plead with management, trying to get them to understand that a black-box bunch of linear algebra that was better than humans at a quantitative task was, just, better. Now it seems like the world has completely reversed, and management is so forthright in their belief that AI is good, that they want it rubbed on everything. And those valuations are sometimes contingent on AI eating <em>everything</em>:</p> <p><img src=\"https://lockwood.dev/assets/img/rust_rewrite/photo_2026-05-23_08-34-53.jpg\" alt=\"image\"></p> <p>In my tiniest mouse voice ever I want to ask probably the most relevant question one can ask about a Business Thing: Was it worth the money and are the companies worth the valuation?</p> <p>Are we done yet?</p> <p>P.S. <a href=\"https://github.com/anthropics/claudes-c-compiler\">Anthropic’s C compiler</a> and <a href=\"https://github.com/wilsonzlin/fastrender\">Cursor’s FastRender web browser</a> haven’t had any commits for months.</p> <p>P.P.S. I’m looking for a <a href=\"https://www.linkedin.com/in/thomas-lockwood-3048b056/\">job</a>.</p> </div> </article> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Flockwood.dev%2Fai%2F2026%2F07%2F27%2Fhow-is-the-bun-rewrite-in-rust-going.html\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"I think it’s important to be very Canny when someone makes a claim that supports a company’s large valuation.","image":"https://lockwood.dev/assets/img/rust_rewrite/slop.png","authors":[{"name":"Tom Lockwood - Developer","url":"https://lockwood.dev/ai/2026/07/27/how-is-the-bun-rewrite-in-rust-going.html","avatar":"https://lockwood.dev/favicon.png"}],"id":"49067854","url":"https://lockwood.dev/ai/2026/07/27/how-is-the-bun-rewrite-in-rust-going.html","external_url":"https://news.ycombinator.com/item?id=49067854","date_published":"2026-07-27T11:12:26Z"},{"title":"The new rules of context engineering for Claude 5 generation models","content_html":"<div class=\"page\" id=\"readability-page-1\"><div><h2>Then and now</h2><p>There were a number of previous context engineering best practices that had become myths. Including:.</p><figure><p><img alt src=\"https://cdn.prod.website-files.com/68a44d4040f98a4adf2207b6/6a63620bedb2b7813b107213_3979f6a1.png\" loading=\"lazy\"></p></figure><h3>Then: Give Claude rules</h3><h3>Now: Let Claude use judgement</h3><p>When we first rolled out Claude Code, we needed to be sure that Claude avoided worst case scenarios, such as deleting files. This meant we would give particularly strong guidance that might not always be true, For example, in the system prompt we used to say:&#160;</p><p><em>In code: default to writing no comments. Never write multi-paragraph docstrings or multi-line comment blocks — one short line max. Don't create planning, decision, or analysis documents unless the user asks for them — work from conversation context, not intermediate files.</em></p><p>But for a certain subset of prompts, this guidance would be wrong. In the case of documentation, the user may have their own preferences, or specific parts of very complex code might need multi-line comment blocks.</p><p>Still, without these guardrails for older models, the comments Claude wrote would be incorrect in many cases and we had to accept this tradeoff. But newer models have better judgement and can handle these decisions well without explicit rules.&#160;</p><p>In the new system prompt we say: <em>Write code that reads like the surrounding code: match its comment density, naming, and idiom.</em></p><h3>Then: Give Claude examples</h3><h3>Now: Design interfaces</h3><p>The number one rule for tool usage was to give Claude examples on how to use them. With our newest models, we’ve found that giving examples actually constrains them to a certain exploration space.&#160;</p><figure><p><img alt src=\"https://cdn.prod.website-files.com/68a44d4040f98a4adf2207b6/6a63620bedb2b7813b107216_c4fdec0d.png\" loading=\"lazy\"></p></figure><p>Instead of using examples, think more about the design of your tools, scripts and files- what parameters does Claude have and how can they be more expressive?&#160;</p><p>For example, in the Todo tool example, just listing status as an enumeration between pending, in_progress, and completed, hints to Claude about how to use it. The instruction on keeping one item in_progress helps define our requested behavior.</p><h3>Then: Put it all upfront</h3><h3>Now: Use progressive disclosure</h3><p>Because Claude Code was focused on coding, our system prompt included detailed information on how to do code review and verification. These were not always needed, but when they were, it was crucial information.</p><p>Since then, Claude Code has gotten very competent at using progressive disclosure- loading the right context at the right times. For example, we moved verification and code review into their own skills that Claude Code could selectively call.</p><p>But progressive disclosure is not just for skills, we also use it for tools. Some of our tools are ‘deferred loading,’ which means the agent must search for their full definitions using ToolSearch before using them. This allows us to have more tools (such as our Task tools) that don’t take up context until they’re needed.</p><p>The same can be applied to your own CLAUDE.md and Skill.md files. A common myth is that you want to make these a central repository for every known practice that you <em>might</em> run into, because Claude would not find it otherwise. Instead, <a href=\"https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code\">consider having a tree of files that can be loaded at the right time</a>.</p><h3>Then: Repeat yourself</h3><h3>Now: Simple tool descriptions</h3><p>Earlier Claude models could sometimes need repeated instructions or be more likely to listen to instructions at the end of their context window than at the start. This meant our system prompt would sometimes have references to tools in the main system prompt as well as instructions in the tool description.&#160;</p><p>We found we could delete these repeat examples and put instructions on how to use tools in the tool descriptions rather than the system prompt.</p><h3>Then: Memory in CLAUDE.md files</h3><h3>Now: Auto-memory</h3><p>We used to encourage users to save things to Claude’s memory, by using the # hotkey to write to their <a href=\"http://claude.md/\">CLAUDE.md</a> automatically. Instead, Claude now automatically saves memories that are relevant to the work and to you.&#160;</p><h3>Then: Simple specs</h3><h3>Now: Rich references</h3><p>In plan mode, Claude Code has heavily relied on markdown files with plans. Storing these files as plans helped Claude refer to them when needed. Another similar best practice was to store specs in the codebase for Claude to refer to while working across longer projects.</p><p>But we’ve found that Claude can handle increasingly more complicated references. Instead of simple markdown files, Claude can reference HTML artifacts created by our new artifacts feature.&#160;</p><p>You may also give Claude references in the form of code. A spec may also be a detailed test suite, or a function in a different codebase that Claude might port.&#160;</p><p>Rubrics are another form of references. Rubrics allow Claude to try and verify your taste in a particular field (e.g. what does a good API design look like) by using <a href=\"https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code\">dynamic workflows</a> and spinning up verifier agents with those rubrics.</p><h2>Applying this to your context</h2><p>Pulling this all together, what does this look like when you assemble your context?</p><figure><p><img alt src=\"https://cdn.prod.website-files.com/68a44d4040f98a4adf2207b6/6a63620bedb2b7813b10721a_836a850d.png\" loading=\"lazy\"></p></figure><h3>System Prompt</h3><p>A system prompt is heavily tied to the product context. It tells Claude what product it’s operating in and what it’s doing. For Claude Code, you will likely never modify this, but if you are building your own agent harness, this is where you should spend a lot of time.</p><h3>CLAUDE.md</h3><p>Keep your CLAUDE.md lightweight and briefly describe what your repo is for, but spend most of the tokens on gotchas inside of the codebase. For example, you may organize your code to keep types in one monolithic file and nowhere else. Avoid stating ‘the obvious’ things Claude should know by looking at your file system or your repo.</p><p>Use progressive disclosure heavily, for example if you have several unique instructions on how to verify your work, create a verification skill and reference it from your CLAUDE.md.</p><h3>Skills</h3><p>Think of skills as lightweight guides to let Claude find information when needed. Avoid making them overconstrained, except in highly important areas.&#160;</p><p>For long skills, try and use progressive disclosure as much as possible- divide it into many files and split them out.</p><p>It’s best when skills encode particular opinions, knowledge, or best practices that are particular to you, your team, or product.&#160;</p><h3>References&#160;</h3><p>You can @ mention files to include them as references. References allow Claude to refer to in-depth information about the current plan.&#160;</p><p>This might be in specs files, mockups, or even entire codebases. Generally you should prefer files that are in code as it provides clear, high-fidelity instructions to Claude in a language it knows very well. For example, a HTML mockup of a design will generally produce better results than a description of the design or a screenshot.</p><h2>Try simplifying</h2><p>Across your system prompt, skills, and CLAUDE.md files, you may need to simplify just like we did. We rolled out a new command called `claude doctor,` which will help you do this automatically as well. For more details on prompting more advanced models specifically, check out our <a href=\"https://claude.com/blog/a-field-guide-to-claude-fable-finding-your-unknowns\">Fable field guide</a>.</p><p><em>This article was written by Thariq Shihipar, member of technical staff, Anthropic.</em></p></div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fclaude.com%2Fblog%2Fthe-new-rules-of-context-engineering-for-claude-5-generation-models\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"We removed over 80% of Claude Code's system prompt for more advanced models. How to apply the lessons we learned to your own context engineering in Claude Code and with your own agents.","image":"https://cdn.prod.website-files.com/68a44d4040f98a4adf2207b6/6a639c6b2e881afef80764c6_og_the-new-rules-of-context-engineering-for-claude-5-generation-models.jpg","authors":[{"name":"Claude","url":"https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models","avatar":"https://cdn.prod.website-files.com/6889473510b50328dbb70ae6/689f4a9aff1f63fde75cf733_favicon.png"}],"id":"49051361","url":"https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models","external_url":"https://news.ycombinator.com/item?id=49051361","date_published":"2026-07-25T20:42:35Z"},{"title":"French firefighters face 'pyrocumulonimbus' for first time","content_html":"<div class=\"page\" id=\"readability-page-1\"><div> <p>Such a formation, also called a cumulonimbus flammagenitus cloud, can be seen during volcanic eruptions -- or, as in this case, when a wildfire roasts the air near the ground, causing it to rise quickly. </p><p>The rising air cools and becomes a cloud, or fire cloud: a turbulent mass that can generate its own winds that worsen fires. If it becomes very large it can even generate lightning.</p><p>Hitherto, they have only really been seen in wildfire-prone Australia and North America. NASA calls them the \"fire-breathing dragon of clouds\".</p><p>What causes them?</p><p>FNSPF spokesman Lieutenant Colonel Eric Brocardi: </p><p>\"The rise in ground temperature at the heart of the blaze is so extreme that the intense heat surges upward in a column, meeting cooler air masses at the top. This contact creates a pyrocumulonimbus -- or fire cloud -- though unfortunately one devoid of moisture. This smoke cloud generates its own weather system, causing anything in its path to spontaneously combust. </p><p>\"Lightning forms within the cloud, striking the embers on the ground and further fuelling the fire ... It produces a low, rumbling sound. </p><p>\"While this type of fire occurs regularly in Canada and Australia, it is unprecedented in France.\"</p><p>Can it be brought under control?</p><p>\"We are dealing with a so-called 'convective' fire that creates its own winds -- winds that constantly shift direction, unlike a standard fire that spreads in a conical pattern. The result is that it spreads in every direction and develops multiple fire fronts, making the situation completely unpredictable. </p><p>\"We don't know how the blaze will spread; the fire front is constantly shifting. We cannot fight it directly. It's a David-versus-Goliath scenario: the idea is that, at some point, we'll find a weak spot and strike there.</p><p>\"Salvation will come either from the sky -- in the form of rain, though it would need to pour heavily for three days -- or by finding a way to steer the fire toward a place where it will die out on its own. The sea, for example.\"</p><p>Do the firefighters have any hope?</p><p>\"We have reached a point of 'operational impossibility' that requires us to accept the need for strategic retreat -- to understand and acknowledge a natural force beyond our control. </p><p>\"It calls for ... knowing what can be done and, above all, what cannot. The situation on the ground is defensive rather than offensive; it is a war-like scenario where we are under constant bombardment and must get everyone to safety. </p><p>\"We realise we are facing a situation where we are powerless. Yet, that powerlessness leaves no room for despair. It is certain that all the efforts being made will yield results. It is out of the question for the firefighters to feel that their work on the ground is in vain.</p><p>\"Every single action -- defending critical sites, rescuing animals -- breathes new life into their efforts, driven by their fierce determination. There is a support force ready to relieve them. </p><p>\"However, not all firefighters from across France can simply converge here, because the risk exists everywhere. We have to hold the line.\"</p><p>(Interviewed by AFP journalist Juliette Collen)</p> <p>© 2026 AFP</p> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fwww.france24.com%2Fen%2Flive-news%2F20260726-french-firefighters-face-pyrocumulonimbus-for-first-time\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"The gigantic wildfire ravaging southwest France has created an extremely dangerous \"pyrocumulonimbus\" -- a phenomenon never before seen in the country -- the spokesman for the country's National Firefighters Federation of France (FNSPF) told AFP.","image":"https://s.france24.com/media/display/28a20512-8901-11f1-af78-005056bfb2b6/w:1280/p:16x9/dafe7dea5fec7f3a48c4717459bcd02a6f29ce60.jpg","authors":[{"name":"FRANCE 24","url":"https://www.france24.com/en/live-news/20260726-french-firefighters-face-pyrocumulonimbus-for-first-time","avatar":"https://www.france24.com/favicon.ico"}],"id":"49060495","url":"https://www.france24.com/en/live-news/20260726-french-firefighters-face-pyrocumulonimbus-for-first-time","external_url":"https://news.ycombinator.com/item?id=49060495","date_published":"2026-07-26T17:49:44Z"},{"title":"GrapheneOS protections against data extraction from locked devices","content_html":"<div class=\"page\" id=\"readability-page-1\"><div id=\"drawer\"> <header id=\"header\"> <div> <p><a href=\"https://discuss.grapheneos.org/\" id=\"home-link\"> GrapheneOS Discussion Forum </a> </p></div> </header> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fdiscuss.grapheneos.org%2Fd%2F40700-grapheneos-protections-against-data-extraction-from-locked-devices\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"GrapheneOS discussion forum","image":"https://discuss.grapheneos.org/opengraph.png","authors":[{"name":"GrapheneOS Discussion Forum","url":"https://discuss.grapheneos.org/d/40700-grapheneos-protections-against-data-extraction-from-locked-devices","avatar":"https://discuss.grapheneos.org/favicon.ico"}],"id":"49055169","url":"https://discuss.grapheneos.org/d/40700-grapheneos-protections-against-data-extraction-from-locked-devices","external_url":"https://news.ycombinator.com/item?id=49055169","date_published":"2026-07-26T05:57:22Z"},{"id":"49048034","url":"https://tobi.knaup.me/2026-07-25-open-weight-ai-is-having-its-kubernetes-moment/","external_url":"https://news.ycombinator.com/item?id=49048034","title":"Open-weight AI is having its Kubernetes moment","date_published":"2026-07-25T14:49:49Z"},{"title":"A shell colon does nothing. Use it anyway","content_html":"<div class=\"page\" id=\"readability-page-1\"><div><legend></legend><p itemprop=\"abstract\">I've written more shell scripts than I can count, but I still stumble upon tricks that honestly blow my mind far too often than I care to admit. Latest thing that blew my head clean off? The shell colon. </p><dl><dt>Published</dt><dd><time datetime=\"2026-07-23T05:53:18+02:00\" itemprop=\"datePublished\">23 July 2026 at 03:53 UTC</time></dd><dt>Modified</dt><dd><time datetime=\"2026-07-26T07:33:03+02:00\" itemprop=\"dateModified\">26 July 2026 at 05:33 UTC</time></dd><dt>Author</dt><dd><span itemtype=\"https://schema.org/Person\" itemprop=\"author\">Filip Roséen</span></dd><dt>Tags</dt><dd><ul><li><a itemprop=\"keywords\" href=\"https://refp.se/articles/tagged/shell\">#shell</a></li><li><a itemprop=\"keywords\" href=\"https://refp.se/articles/tagged/posix\">#posix</a></li><li><a itemprop=\"keywords\" href=\"https://refp.se/articles/tagged/unix\">#unix</a></li></ul></dd></dl></div><section itemprop=\"articleBody\"><h2 id=\"in-a-land-far-far-away..\"> In a land far-far away.. </h2><p>... there was once a far too cold cup of coffee next to a freshly brewed far-too-hot one. Four different terminals where three could have been closed an hour ago, and a shell script which I really (really) did not want to write.</p> <p>Who would have thought a single colon would be the one to save the <del><code>day</code></del> night?</p> <blockquote> <p><strong>Note</strong>: Want your mind blown straight away? See <a href=\"https://refp.se/articles/your-shell-and-the-magic-colon#more-colons-in-the-limelight\">more colons in the limelight</a>.</p> </blockquote> <h2 id=\"checking-for-required-arguments\"> Checking for required arguments </h2><p>This is a familiar dance, it's pretty much muscle memory by this point. You have a script, it takes a few arguments, and some of them are mandatory; alright, an if-statement like so many times before:</p> <figure><pre><code><span>if</span> [ -z <span>\"<span>$1</span>\"</span> ]; <span>then</span> <span>echo</span> <span>\"missing argument, aborting.\"</span> 1&gt;&amp;2 <span>exit</span> 1 <span>fi</span> <span>echo</span> <span>\"Hello <span>$1</span>!\"</span> </code></pre></figure> <p>Though.. what if I told you the above four lines could be replaced by just... one?</p> <figure><pre><code>: <span>\"<span>${1:?missing argument, aborting.}</span>\"</span> <span>echo</span> <span>\"Hello <span>$1</span>!\"</span> </code></pre></figure> <figure><pre><code><span>$ </span><span>bash example.sh</span> example.sh: line 1: 1: missing argument, aborting. <span> $ </span><span>bash example.sh refp</span> Hello refp! </code></pre></figure> <p>And look what happens if we refer to a variable with a proper name — it's the same behavior as previously but easier to spot; the diagnostic includes the name of our variable!</p> <figure><pre><code>: <span>\"<span>${GREET_NAME:?missing argument, aborting.}</span>\"</span> <span>echo</span> <span>\"Hello <span>$GREET_NAME</span>!\"</span> </code></pre></figure> <figure><pre><code><span>$ </span><span>bash greet.sh</span> greet.sh: line 1: GREET_NAME: missing argument, aborting. </code></pre></figure> <h3 id=\"parameter-expansion-and-the-story-of-:\"> Parameter expansion and the story of <code>:?</code> </h3><p>There are two things going on in the previous snippet, and you are correct in identifying that one part is using <a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02\">parameter expansion</a>:</p> <ul> <li><p>The syntax <code>${name:?diagnostic}</code> checks whether <code>$name</code> is unset or empty — if it is, the diagnostic is printed to <em>stderr</em> and the shell exits with a non-zero status, otherwise;</p> </li> <li><p>if the variable is set, it is equivalent to <code>$name</code>.</p> </li> </ul> <h2 id=\"that..-other-colon\"> That.. other colon </h2><p>So that's one colon, but what about that other one, the one who sits alone at the beginning of the line?</p> <ul> <li><p><code>:</code> is the <a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_16\">null-command</a> — a builtin that does nothing but evaluate its arguments and discard the result.</p> </li> <li><p><code>:</code> is old — it goes all the way back to the <a href=\"https://en.wikipedia.org/wiki/Thompson_shell#Design\">1971 Thompson shell</a> where it doubled as a <a href=\"https://www.in-ulm.de/~mascheck/bourne/PWB/goto.1.html\">label</a> and Unix's very first comment marker.</p> </li> <li><p><code>:</code> two eyes staring at you in the dark, with love.</p> </li> </ul> <h2 id=\"more-colons-in-the-limelight\"> More colons in the limelight </h2><p>Perhaps we have already established that there is more to <code>:</code> than meets the eye, but to prove the real magic of the <a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_16\">null-command</a> — here are a few usages that blew my mind.</p> <figure><pre><code>: <span>\"<span>${DATA_DIR:=/var/data}</span>\"</span> <span># set defaults, : swallows the result</span> : <span>\"<span>${RETRIES:=3}</span>\"</span> <span># instead of running it as a command</span> </code></pre></figure> <figure><pre><code>: &gt; error.log <span># truncate error.log</span> : &gt; error.log &gt; access.log <span># truncate both error.log and access.log</span> </code></pre></figure> <figure><pre><code>( : &lt; dataset.json ) &amp;&amp; <span>echo</span> YES <span># is dataset.json readable?</span> ( : &gt;&gt; result.json ) &amp;&amp; <span>echo</span> YES <span># is result.json writable?</span> </code></pre></figure> <figure><pre><code><span>trap</span> : INT <span># trap requires a command</span> <span>sleep</span> 60 <span># sleep is interruptible</span> </code></pre></figure> <figure><pre><code><span>set</span> -u <span># error on unset variables</span> : <span>\"<span>$DEPLOY_ENV</span>\"</span> <span>\"<span>$HOST</span>\"</span> <span># check DEPLOY_ENV and HOST</span> </code></pre></figure> <figure><pre><code><span>if</span> some-command; <span>then</span> : <span># command required</span> <span>else</span> <span>echo</span> <span>\"command failed\"</span> <span>fi</span> </code></pre></figure> <h2 id=\"con-colon-sion\"> Con-colon-sion </h2><p>So, if you are like me and prefer less typing (gotta go fast) — the <a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_16\">null-command</a> and <a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02\">parameter expansion</a> are a pair worth studying before your coffee goes cold.</p> <p>And also.. isn't this — magic?</p> <figure><pre><code><span>set</span> : : : : : : : : : : : : : : : : : : : : : <span>while</span> : colons are more than <span>\"<span>${1:?magic}</span>\"</span>; <span>do</span> <span>echo</span> <span>\"$*\"</span> &amp;&amp; <span>shift</span> <span>done</span> </code></pre></figure> <blockquote> <p><strong>Note</strong>: The above example is safe to run locally, try it!</p> </blockquote> <h2 id=\"frequently-asked-questions\"> Frequently Asked Questions </h2><p>After reading a few comments online, it seems I skipped over some things worth explaining. I will keep this section updated as questions come up.</p> <ul> <li><h3 id=\"why-do-i-need-the-null-command-doesnt-the-expansion-happen-without-the-colon\"> Why do I need the null-command? Doesn't the expansion happen without the colon? </h3><p>The parameter expansion will happen regardless, but without a null-command or similar usage the shell will treat the resulting string as a command to run.</p> <figure><pre><code><span>% </span><span><span>${HELLO:=123}</span></span> zsh: command not found: 123 </code></pre></figure> <p>If we prefix our parameter-expansion with the null-command, the result is discarded, but the expression is still evaluated (setting <code>HELLO</code> to <code>123</code>).</p> <figure><pre><code><span>% </span><span>: <span>${HELLO:=123}</span></span> <span>% </span><span><span>echo</span> <span>$HELLO</span></span> 123 </code></pre></figure> </li> <li><h3 id=\"why-use-the-null-command-when-i-could-do-var=$-var:-default-value\"> Why use the null-command when I could do <code>VAR=${VAR:-default-value}</code>? </h3><p>This at its core boils down to personal preference, but using our beloved colon we can shrink the number of potential typos to one (rather than two):</p> <figure><pre><code>: <span>\"<span>${DATA_DIR:=/var/data}</span>\"</span> <span># &lt;- DATA_DIR mentioned once (1)</span> DATA_DIR=<span>\"<span>${DATA_DRI:-/var/data}</span>\"</span> <span># &lt;- oops (2)</span> </code></pre></figure> </li> <li><h3 id=\"why-would-i-do-any-of-these-when-it-hurts-readability\"> Why would I do any of these when it hurts readability? </h3><p>There are a few common misconceptions about the — very contrived — examples presented in this article, questions regarding their usefulness, or if one should ever-ever use these things at all.</p> <p>Let's take the below as an example.</p> <figure><pre><code><span>if</span> some-command; <span>then</span> : <span># command required</span> <span>else</span> <span>echo</span> <span>\"command failed\"</span> <span>fi</span> </code></pre></figure> <p>Of course you can use <code>if ! some-command</code> and get rid of the branching, but that isn't the point of the snippet — the point is to show that the null-command can be used in places where a command is required, but nothing is desired.</p> <p>It was never meant to be read as <em>\"oh, if I have an if-statement I should use null-command\"</em>, it is intended to be read as <em>\"oh, if I am in a context which requires a command, I can use the null-command to no-op it\"</em>.</p> <h4 id=\"clever-real-world-usage-of-:-in-the-wild\"> Clever real-world usage of <code>:</code> in the wild </h4><p>User <a href=\"https://news.ycombinator.com/user?id=fphilipe\">ifphilipe</a> posted what follows as <a href=\"https://news.ycombinator.com/item?id=49047453\">a comment</a> on <a href=\"https://news.ycombinator.com/\">news.ycombinator.com</a>, which is the direct equivalent of needing a command which does absolutely nothing.</p> <blockquote> <p>I use the colon as EDITOR with Git when I want to do an interactive rebase combined with auto squash without having to edit the todo list. I have an alias[1] for that which I call a quick interactive rebase:</p> <p><code>riq = -c sequence.editor=: rebase --interactive</code></p> </blockquote> <p>Could this article have used the above rather than the so much debated if-statement? If I was clever enough to come up with it — yes.. but would it be as comprehensible in terms of understanding what <code>:</code> really is? I strongly suspect not.</p> </li> </ul> </section></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Frefp.se%2Farticles%2Fyour-shell-and-the-magic-colon\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"I've written more shell scripts than I can count, but I still stumble upon tricks that honestly blow my mind far too often than I care to admit. Latest thing that blew my head clean off? The shell colon.","image":"https://refp.se/logo.png","authors":[{"name":null,"url":"https://refp.se/articles/your-shell-and-the-magic-colon","avatar":"https://refp.se/favicon.ico?v=1"}],"id":"49047453","url":"https://refp.se/articles/your-shell-and-the-magic-colon","external_url":"https://news.ycombinator.com/item?id=49047453","date_published":"2026-07-25T13:33:49Z"},{"title":"Kimi-K3 Technical Report [pdf]","content_html":"<div class=\"page\" id=\"readability-page-1\"><div> <react-partial partial-name=\"marketing-navigation\" data-ssr=\"true\" data-attempted-ssr=\"true\" data-react-profiling=\"false\"> <div data-target=\"react-partial.reactRoot\"><nav aria-label=\"Global\"><ul><li><div id=\"_R_5_\"><ul><li><div><p><span id=\"_R_1d5_\">AI CODE CREATION</span></p><ul aria-labelledby=\"_R_1d5_\"><li><a href=\"https://github.com/features/copilot\" data-analytics-event=\"{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}\"><div><p><span>GitHub Copilot</span><span>Write better code with AI</span></p></div></a></li><li><a href=\"https://github.com/features/ai/github-app\" data-analytics-event=\"{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}\"><div><p><span>GitHub Copilot app</span><span>Direct agents from issue to merge</span></p></div></a></li><li><a href=\"https://github.com/mcp\" data-analytics-event=\"{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}\"><div><p><span>MCP Registry</span><span>Integrate external tools</span></p></div></a></li></ul></div></li><li><div><p><span id=\"_R_2d5_\">DEVELOPER WORKFLOWS</span></p><ul aria-labelledby=\"_R_2d5_\"><li><a href=\"https://github.com/features/actions\" data-analytics-event=\"{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}\"><div><p><span>Actions</span><span>Automate any workflow</span></p></div></a></li><li><a href=\"https://github.com/features/codespaces\" data-analytics-event=\"{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}\"><div><p><span>Codespaces</span><span>Instant dev environments</span></p></div></a></li><li><a href=\"https://github.com/features/issues\" data-analytics-event=\"{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}\"><div><p><span>Issues</span><span>Plan and track work</span></p></div></a></li><li><a href=\"https://github.com/features/code-review\" data-analytics-event=\"{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}\"><div><p><span>Code Review</span><span>Manage code changes</span></p></div></a></li><li><a href=\"https://github.com/features/code-quality\" data-analytics-event=\"{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}\"><div><p><span>Code Quality</span><span>Enforce quality at merge</span></p></div></a></li></ul></div></li><li><div><p><span id=\"_R_3d5_\">APPLICATION SECURITY</span></p><ul aria-labelledby=\"_R_3d5_\"><li><a href=\"https://github.com/security/advanced-security\" data-analytics-event=\"{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}\"><div><p><span>GitHub Advanced Security</span><span>Find and fix vulnerabilities</span></p></div></a></li><li><a href=\"https://github.com/security/advanced-security/code-security\" data-analytics-event=\"{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}\"><div><p><span>Code security</span><span>Secure your code as you build</span></p></div></a></li><li><a href=\"https://github.com/security/advanced-security/secret-protection\" data-analytics-event=\"{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}\"><div><p><span>Secret protection</span><span>Stop leaks before they start</span></p></div></a></li></ul></div></li><li><div><p><span id=\"_R_4d5_\">EXPLORE</span></p><ul aria-labelledby=\"_R_4d5_\"><li><a href=\"https://github.com/why-github\" data-analytics-event=\"{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}\"><span>Why GitHub</span></a></li><li><a href=\"https://docs.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Documentation</span></a></li><li><a href=\"https://github.blog/\" data-analytics-event=\"{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Blog</span></a></li><li><a href=\"https://github.blog/changelog\" data-analytics-event=\"{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Changelog</span></a></li><li><a href=\"https://github.com/marketplace\" data-analytics-event=\"{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}\"><span>Marketplace</span></a></li></ul></div></li></ul><p><a href=\"https://github.com/features\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}\"><span>View all features</span></a></p></div></li><li><div id=\"_R_9_\"><ul><li><div><p><span id=\"_R_1d9_\">BY COMPANY SIZE</span></p><ul aria-labelledby=\"_R_1d9_\"><li><a href=\"https://github.com/enterprise\" data-analytics-event=\"{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}\"><span>Enterprises</span></a></li><li><a href=\"https://github.com/team\" data-analytics-event=\"{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}\"><span>Small and medium teams</span></a></li><li><a href=\"https://github.com/enterprise/startups\" data-analytics-event=\"{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}\"><span>Startups</span></a></li><li><a href=\"https://github.com/solutions/industry/nonprofits\" data-analytics-event=\"{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}\"><span>Nonprofits</span></a></li></ul></div></li><li><div><p><span id=\"_R_2d9_\">BY USE CASE</span></p><ul aria-labelledby=\"_R_2d9_\"><li><a href=\"https://github.com/solutions/use-case/app-modernization\" data-analytics-event=\"{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}\"><span>App Modernization</span></a></li><li><a href=\"https://github.com/solutions/use-case/devsecops\" data-analytics-event=\"{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}\"><span>DevSecOps</span></a></li><li><a href=\"https://github.com/solutions/use-case/devops\" data-analytics-event=\"{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}\"><span>DevOps</span></a></li><li><a href=\"https://github.com/solutions/use-case/ci-cd\" data-analytics-event=\"{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}\"><span>CI/CD</span></a></li><li><a href=\"https://github.com/solutions/use-case\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}\"><span>View all use cases</span></a></li></ul></div></li><li><div><p><span id=\"_R_3d9_\">BY INDUSTRY</span></p><ul aria-labelledby=\"_R_3d9_\"><li><a href=\"https://github.com/solutions/industry/healthcare\" data-analytics-event=\"{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}\"><span>Healthcare</span></a></li><li><a href=\"https://github.com/solutions/industry/financial-services\" data-analytics-event=\"{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}\"><span>Financial services</span></a></li><li><a href=\"https://github.com/solutions/industry/manufacturing\" data-analytics-event=\"{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}\"><span>Manufacturing</span></a></li><li><a href=\"https://github.com/solutions/industry/government\" data-analytics-event=\"{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}\"><span>Government</span></a></li><li><a href=\"https://github.com/solutions/industry\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}\"><span>View all industries</span></a></li></ul></div></li></ul><p><a href=\"https://github.com/solutions\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}\"><span>View all solutions</span></a></p></div></li><li><div id=\"_R_d_\"><ul><li><div><p><span id=\"_R_1dd_\">EXPLORE BY TOPIC</span></p><ul aria-labelledby=\"_R_1dd_\"><li><a href=\"https://github.com/resources/articles?topic=ai\" data-analytics-event=\"{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}\"><span>AI</span></a></li><li><a href=\"https://github.com/resources/articles?topic=software-development\" data-analytics-event=\"{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}\"><span>Software Development</span></a></li><li><a href=\"https://github.com/resources/articles?topic=devops\" data-analytics-event=\"{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}\"><span>DevOps</span></a></li><li><a href=\"https://github.com/resources/articles?topic=security\" data-analytics-event=\"{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}\"><span>Security</span></a></li><li><a href=\"https://github.com/resources/articles\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}\"><span>View all topics</span></a></li></ul></div></li><li><div><p><span id=\"_R_2dd_\">EXPLORE BY TYPE</span></p><ul aria-labelledby=\"_R_2dd_\"><li><a href=\"https://github.com/customer-stories\" data-analytics-event=\"{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}\"><span>Customer stories</span></a></li><li><a href=\"https://github.com/resources/events\" data-analytics-event=\"{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}\"><span>Events &amp; webinars</span></a></li><li><a href=\"https://github.com/resources/whitepapers\" data-analytics-event=\"{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}\"><span>Ebooks &amp; reports</span></a></li><li><a href=\"https://github.com/solutions/executive-insights\" data-analytics-event=\"{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}\"><span>Business insights</span></a></li><li><a href=\"https://skills.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>GitHub Skills</span></a></li></ul></div></li><li><div><p><span id=\"_R_3dd_\">SUPPORT &amp; SERVICES</span></p><ul aria-labelledby=\"_R_3dd_\"><li><a href=\"https://docs.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Documentation</span></a></li><li><a href=\"https://support.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Customer support</span></a></li><li><a href=\"https://github.com/orgs/community/discussions\" data-analytics-event=\"{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}\"><span>Community forum</span></a></li><li><a href=\"https://github.com/trust-center\" data-analytics-event=\"{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}\"><span>Trust center</span></a></li><li><a href=\"https://github.com/partners\" data-analytics-event=\"{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}\"><span>Partners</span></a></li></ul></div></li></ul><p><a href=\"https://github.com/resources\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}\"><span>View all resources</span></a></p></div></li><li><div id=\"_R_h_\"><ul><li><div><p><span id=\"_R_1dh_\">COMMUNITY</span></p><ul aria-labelledby=\"_R_1dh_\"><li><a href=\"https://github.com/open-source/sponsors\" data-analytics-event=\"{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}\"><div><p><span>GitHub Sponsors</span><span>Fund open source developers</span></p></div></a></li></ul></div></li><li><div><p><span id=\"_R_2dh_\">PROGRAMS</span></p><ul aria-labelledby=\"_R_2dh_\"><li><a href=\"https://securitylab.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Security Lab</span></a></li><li><a href=\"https://maintainers.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Maintainer Community</span></a></li><li><a href=\"https://github.com/open-source/accelerator\" data-analytics-event=\"{&quot;action&quot;:&quot;accelerator&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;accelerator_link_open_source_navbar&quot;}\"><span>Accelerator</span></a></li><li><a href=\"https://stars.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>GitHub Stars</span></a></li><li><a href=\"https://archiveprogram.github.com/\" data-analytics-event=\"{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}\" target=\"_blank\" rel=\"noreferrer\"><span>Archive Program</span></a></li></ul></div></li><li><div><p><span id=\"_R_3dh_\">REPOSITORIES</span></p><ul aria-labelledby=\"_R_3dh_\"><li><a href=\"https://github.com/topics\" data-analytics-event=\"{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}\"><span>Topics</span></a></li><li><a href=\"https://github.com/trending\" data-analytics-event=\"{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}\"><span>Trending</span></a></li><li><a href=\"https://github.com/collections\" data-analytics-event=\"{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}\"><span>Collections</span></a></li></ul></div></li></ul></div></li><li><div id=\"_R_l_\"><ul><li><div><p><span id=\"_R_1dl_\">ENTERPRISE SOLUTIONS</span></p><ul aria-labelledby=\"_R_1dl_\"><li><a href=\"https://github.com/enterprise\" data-analytics-event=\"{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}\"><div><p><span>Enterprise platform</span><span>AI-powered developer platform</span></p></div></a></li></ul></div></li><li><div><p><span id=\"_R_2dl_\">AVAILABLE ADD-ONS</span></p><ul aria-labelledby=\"_R_2dl_\"><li><a href=\"https://github.com/security/advanced-security\" data-analytics-event=\"{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}\"><div><p><span>GitHub Advanced Security</span><span>Enterprise-grade security features</span></p></div></a></li><li><a href=\"https://github.com/features/copilot/copilot-business\" data-analytics-event=\"{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}\"><div><p><span>Copilot for Business</span><span>Enterprise-grade AI features</span></p></div></a></li><li><a href=\"https://github.com/enterprise/premium-support\" data-analytics-event=\"{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}\"><div><p><span>Premium Support</span><span>Enterprise-grade 24/7 support</span></p></div></a></li></ul></div></li></ul></div></li><li><a href=\"https://github.com/pricing\" data-analytics-event=\"{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}\"><span>Pricing</span></a></li></ul></nav></div> </react-partial> <div> <qbsearch-input data-scope=\"repo:MoonshotAI/Kimi-K3\" data-custom-scopes-path=\"/search/custom_scopes\" data-delete-custom-scopes-csrf=\"kZzKIQ3oSwTAUdfvjdFxF_ULiFV1_VXvt1FItz9iwZh8eIlT_zHjQNJ2ZUq-82h_0IbkVTz85JW4JO5O1gMAUg\" data-max-custom-scopes=\"10\" data-header-redesign-enabled=\"false\" data-initial-value data-blackbird-suggestions-path=\"/search/suggestions\" data-jump-to-suggestions-path=\"/_graphql/GetSuggestedNavigationDestinations\" data-current-repository=\"MoonshotAI/Kimi-K3\" data-current-org=\"MoonshotAI\" data-current-owner data-logged-in=\"false\" data-copilot-chat-enabled=\"false\" data-nl-search-enabled=\"false\" data-retain-scroll-position=\"true\"> <div> <dialog-helper> <dialog data-target=\"qbsearch-input.feedbackDialog\" data-action=\"close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose\" id=\"feedback-dialog\" aria-modal=\"true\" aria-labelledby=\"feedback-dialog-title\" aria-describedby=\"feedback-dialog-description\" data-view-component=\"true\"> <div data-view-component=\"true\"> <p> </p><h2 id=\"feedback-dialog-title\"> Provide feedback </h2> <p></p> </div> <scrollable-region data-labelled-by=\"feedback-dialog-title\"> <div data-view-component=\"true\"> <form id=\"code-search-feedback-form\" data-turbo=\"false\" action=\"/search/feedback\" accept-charset=\"UTF-8\" method=\"post\"> <p>We read every piece of feedback, and take your input very seriously.</p> <label for=\"include_email\">Include my email address so I can be contacted</label> </form></div> </scrollable-region> </dialog></dialog-helper> <custom-scopes data-target=\"qbsearch-input.customScopesManager\"> <dialog-helper> <dialog data-target=\"custom-scopes.customScopesModalDialog\" data-action=\"close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose\" id=\"custom-scopes-dialog\" aria-modal=\"true\" aria-labelledby=\"custom-scopes-dialog-title\" aria-describedby=\"custom-scopes-dialog-description\" data-view-component=\"true\"> <div data-view-component=\"true\"> <p> </p><h2 id=\"custom-scopes-dialog-title\"> Saved searches </h2> <h2 id=\"custom-scopes-dialog-description\">Use saved searches to filter your results more quickly</h2> <p></p> </div> <scrollable-region data-labelled-by=\"custom-scopes-dialog-title\"> </scrollable-region> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div> <p><a href=\"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMoonshotAI%2FKimi-K3%2Fblob%2Fmain%2Fk3_tech_report.pdf\" data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/MoonshotAI/Kimi-K3/blob/main/k3_tech_report.pdf&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"8276f579d07b993e1aaed60c2cbb5e161acbaa64ea25edaba72004c266ab7571\" data-analytics-event=\"{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}\"> Sign in </a> </p></div> <p><a href=\"https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F<user-name>%2F<repo-name>%2Fblob%2Fshow&source=header-repo&source_repo=MoonshotAI%2FKimi-K3\" data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/MoonshotAI/Kimi-K3/blob/main/k3_tech_report.pdf&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"8276f579d07b993e1aaed60c2cbb5e161acbaa64ea25edaba72004c266ab7571\" data-analytics-event=\"{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/<user-name>/<repo-name>/blob/show;ref_cta:Sign up;ref_loc:header logged out&quot;}\"> Sign up </a></p><div> <react-partial-anchor> <tool-tip id=\"tooltip-637003c5-33bb-496a-9536-85fd74b5f0cf\" for=\"icon-button-9240919f-63cf-41d5-a428-8b9b3d39dfd2\" popover=\"manual\" data-direction=\"s\" data-type=\"label\" data-view-component=\"true\">Appearance settings</tool-tip> <template data-target=\"react-partial-anchor.template\"><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.6419c316ceccddf2.module.css\"> <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/appearance-settings.19bb1b00a81ea65b.module.css\"> <react-partial partial-name=\"appearance-settings\" data-ssr=\"false\" data-attempted-ssr=\"false\" data-react-profiling=\"false\">  </react-partial> </template></react-partial-anchor> </div> </div> </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fgithub.com%2FMoonshotAI%2FKimi-K3%2Fblob%2Fmain%2Fk3_tech_report.pdf\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"Open Frontier Intelligence. Contribute to MoonshotAI/Kimi-K3 development by creating an account on GitHub.","image":"https://opengraph.githubassets.com/7ba6413686b919b09f1b8e8c0c0f7636cd0f003430d3a8302d43829a3a21523e/MoonshotAI/Kimi-K3","authors":[{"name":"GitHub","url":"https://github.com/MoonshotAI/Kimi-K3/blob/main/k3_tech_report.pdf","avatar":"https://github.githubassets.com/favicons/favicon.svg"}],"id":"49070985","url":"https://github.com/MoonshotAI/Kimi-K3/blob/main/k3_tech_report.pdf","external_url":"https://news.ycombinator.com/item?id=49070985","date_published":"2026-07-27T15:23:45Z"},{"id":"49060856","url":"https://beyondloom.com/decker/","external_url":"https://news.ycombinator.com/item?id=49060856","title":"Decker, a platform that builds on the legacy of Hypercard and classic macOS","date_published":"2026-07-26T18:23:06Z"},{"title":"Ruff v0.16.0 – Significant new updates – 413 default rules up from 59","content_html":"<div class=\"page\" id=\"readability-page-1\"><article><p><a href=\"https://github.com/astral-sh/ruff\">Ruff v0.16.0</a> is available now! Install it from <a href=\"https://pypi.org/project/ruff/\">PyPI</a>, or with your package manager of choice:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"shell\" data-theme=\"default\"><span><span>uv </span><span>tool</span><span> </span><span>install</span><span> </span><span>ruff@latest</span></span></code></pre></figure></div> <p>As a reminder: <strong>Ruff is an extremely fast Python linter and formatter, written in Rust.</strong> Ruff can be used to replace Black, Flake8 (plus dozens of plugins), isort, pydocstyle, pyupgrade, and more, all while executing tens or hundreds of times faster than any individual tool.</p> <h2><span id=\"migrating-to-v016\"></span>Migrating to v0.16 <a href=\"https://astral.sh/blog/ruff-v0.16.0#migrating-to-v016\">#</a></h2> <p>Ruff v0.16 has a small number of breaking changes, allowing most users to update without significant changes to code or configuration. The main exception is described below.</p> <h3><span id=\"better-default-rule-set\"></span>Better default rule set <a href=\"https://astral.sh/blog/ruff-v0.16.0#better-default-rule-set\">#</a></h3> <p>Ruff now enables 413 rules by default, up from 59 in previous versions.</p> <p>Since Ruff's default rule set was last modified in <a href=\"https://github.com/astral-sh/ruff/blob/main/changelogs/0.1.x.md#breaking-changes\">v0.1.0</a>, the number of rules in Ruff has grown from 708 to 968. Many of these rules catch severe issues, including <a href=\"https://docs.astral.sh/ruff/rules/load-before-global-declaration\">syntax errors</a> and <a href=\"https://docs.astral.sh/ruff/rules/yield-in-init/\">immediate runtime errors</a> but were not previously enabled by default. With the new rule set, Ruff will bring these issues and many others to your attention without any Ruff configuration. Even if you're already using <a href=\"https://docs.astral.sh/ruff/settings/#lint_select\"><code>select</code></a> or <a href=\"https://docs.astral.sh/ruff/settings/#lint_extend-select\"><code>extend-select</code></a>, we hope that this will draw your attention to helpful rules that you previously hadn't discovered.</p> <p>The full listing of enabled rules is too long to include here, but you can find it on our new <a href=\"https://docs.astral.sh/ruff/default-rules/\">Default Rules</a> page in the documentation. A few of the highlights include rules from the popular flake8-bugbear (<code>B</code>) and pyupgrade (<code>UP</code>) linters, as well as rules from our own <code>RUF</code> category.</p> <p>Note that this is primarily an expansion, but 18 of the more opinionated pycodestyle (<code>E</code>) and pyflakes (<code>F</code>) rules have been removed from the default set: <code>E401</code>, <code>E402</code>, <code>E701</code>, <code>E702</code>, <code>E703</code>, <code>E711</code>, <code>E712</code>, <code>E713</code>, <code>E714</code>, <code>E721</code>, <code>E731</code>, <code>E741</code>, <code>E742</code>, <code>E743</code>, <code>F403</code>, <code>F405</code>, <code>F406</code>, and <code>F722</code>.</p> <p>If you want to revert to the old default set, you can easily <code>select</code> the old rules with this configuration:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"toml\" data-theme=\"default\"><span><span>[</span><span>lint</span><span>]</span></span> <span><span>select</span><span> </span><span>=</span><span> [</span><span>\"</span><span>E4</span><span>\"</span><span>, </span><span>\"</span><span>E7</span><span>\"</span><span>, </span><span>\"</span><span>E9</span><span>\"</span><span>, </span><span>\"</span><span>F</span><span>\"</span><span>]</span></span></code></pre></figure></div> <p>We view this work as closely tied to our longstanding goal of <a href=\"https://github.com/astral-sh/ruff/issues/1774\">rule recategorization</a>, so look forward to upcoming developments in this area.</p> <h2><span id=\"new-features-in-v016\"></span>New features in v0.16 <a href=\"https://astral.sh/blog/ruff-v0.16.0#new-features-in-v016\">#</a></h2> <p>Ruff v0.16 also includes several newly stabilized features that are highlighted below.</p> <h3><span id=\"markdown-code-block-formatting\"></span>Markdown code block formatting <a href=\"https://astral.sh/blog/ruff-v0.16.0#markdown-code-block-formatting\">#</a></h3> <p>Ruff can now format Python code blocks embedded in Markdown files.</p> <p>In these files, Ruff v0.16 will format <a href=\"https://spec.commonmark.org/0.30/#fenced-code-blocks\">fenced code blocks</a> with a <code>python</code>, <code>py</code>, <code>python3</code>, <code>py3</code>, <code>pyi</code>, or <code>pycon</code> <a href=\"https://spec.commonmark.org/0.30/#info-string\">info string</a>. <code>pyi</code> blocks are formatted like stub files, <code>pycon</code> blocks as REPL sessions, and the others use normal Python file formatting. For example:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"markdown\" data-theme=\"default\"><span><span># README</span></span> <span></span> <span><span>Here's an example:</span></span> <span></span> <span><span>```py</span></span> <span><span>import</span><span> ruff</span></span> <span></span> <span><span>ruff_binary </span><span>=</span><span> (</span></span> <span><span> ruff.find_ruff_bin()</span></span> <span><span>)</span></span> <span><span>```</span></span></code></pre></figure></div> <p>will be reformatted when running <code>ruff format</code>:</p> <img src=\"https://astral.sh/static/PNG/Ruff_v_0_16_0_format_markdown.png\" alt=\"Ruff formatter output showing a Markdown code block that would be reformatted\"> <p>This can also be used to format <a href=\"https://quarto.org/\">Quarto</a> notebooks because Ruff still recognizes the language when surrounded by curly braces (e.g. <code> ```{python}</code>). Note that you may need to configure your <a href=\"https://docs.astral.sh/ruff/settings/#extension\"><code>extension</code></a> mapping if your Quarto files use the <code>.qmd</code> extension.</p> <p>If you need to suppress formatting, you have several options. If you want the suppression comments to appear in the code block, you can use normal <code>fmt: off</code> and <code>fmt: on</code> comments within the code block itself, or you can use similar HTML comments to disable formatting for a whole region of the document:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"markdown\" data-theme=\"default\"><span><span># README</span></span> <span></span> <span><span>&lt;!-- fmt: off --&gt;</span></span> <span></span> <span><span>```py</span></span> <span><span>x </span><span>=</span><span> </span><span>\"</span><span>this will be suppressed</span><span>\"</span></span> <span><span>```</span></span> <span></span> <span><span>&lt;!-- fmt: on --&gt;</span></span></code></pre></figure></div> <p>To suppress Markdown formatting entirely, you can use the normal <a href=\"https://docs.astral.sh/ruff/settings/#extend-exclude\"><code>extend-exclude</code></a> setting to exclude all Markdown files with a glob like <code>*.md</code>.</p> <p>See the <a href=\"https://docs.astral.sh/ruff/formatter/#markdown-code-formatting\">full documentation</a> for more details.</p> <h3><code>ruff: ignore</code> comments offer new suppression features <a href=\"https://astral.sh/blog/ruff-v0.16.0#ruff-ignore-comments-offer-new-suppression-features\">#</a></h3> <p>Ruff now has its own suppression comment format that can be used on its own line.</p> <p>In v0.15, the Ruff linter gained a range suppression mechanism through paired <code>ruff: disable</code> and <code>ruff: enable</code> comments, much like the <code>fmt: off</code> and <code>fmt: on</code> pair described above:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"py\" data-theme=\"default\"><span><span># ruff: disable[N803]</span></span> <span><span>def</span><span> </span><span>foo</span><span>(</span></span> <span><span> </span><span>legacyArg1</span><span>,</span></span> <span><span> </span><span>legacyArg2</span><span>,</span></span> <span><span> </span><span>legacyArg3</span><span>,</span></span> <span><span> </span><span>legacyArg4</span><span>,</span></span> <span><span>): </span><span>...</span></span> <span><span># ruff: enable[N803]</span></span></code></pre></figure></div> <p>Ruff v0.16 builds on this to add two additional <code>ruff</code> suppression comments. <code>ruff: ignore</code> can be used to suppress a diagnostic on the same line, like <code>noqa</code>, or on the following logical line:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"py\" data-theme=\"default\"><span><span>import</span><span> math </span><span># ruff: ignore[F401]</span></span> <span></span> <span><span># ruff: ignore[N803]</span></span> <span><span>def</span><span> </span><span>foo</span><span>(</span></span> <span><span> </span><span>legacyArg1</span><span>,</span></span> <span><span> </span><span>legacyArg2</span><span>,</span></span> <span><span> </span><span>legacyArg3</span><span>,</span></span> <span><span> </span><span>legacyArg4</span><span>,</span></span> <span><span>): </span><span>...</span></span></code></pre></figure></div> <p>In this case, the logical line spans the whole function header (from <code>def</code> to the colon), so the <code>ruff: ignore</code> suppresses all of the same <a href=\"https://docs.astral.sh/ruff/rules/invalid-argument-name/\"><code>N803</code></a> diagnostics as the <code>disable</code>/<code>enable</code> pair above.</p> <p><code>ruff: file-ignore</code> comments can be used to suppress diagnostics for the entire file, just like <code>ruff: noqa</code> comments:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"py\" data-theme=\"default\"><span><span># ruff: file-ignore[F401] Allow unused imports in this file</span></span> <span></span> <span><span>import</span><span> foo</span></span> <span><span>import</span><span> bar</span></span> <span><span>import</span><span> baz</span></span></code></pre></figure></div> <p>As this example also shows, each of these comment kinds can have an associated \"reason\" explaining why they were added, in this case <code>Allow unused imports in this file</code>.</p> <p><code>ruff: ignore</code> comments can be added automatically with the new <code>--add-ignore</code> CLI flag, and in <a href=\"https://docs.astral.sh/ruff/preview/\">preview</a>, all of these <code>ruff</code> suppression comments support rule names instead of codes:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"console\" data-theme=\"default\"><span><span>❯ </span><span>echo</span><span> </span><span>'</span><span>import math</span><span>'</span><span> </span><span>&gt;</span><span> </span><span>try.py</span></span> <span><span>❯ </span><span>uvx</span><span> </span><span>ruff@latest</span><span> </span><span>check</span><span> </span><span>--preview</span><span> </span><span>--add-ignore</span><span> </span><span>try.py</span></span> <span><span>Added </span><span>1</span><span> </span><span>ignore</span><span> </span><span>comment.</span></span> <span><span>❯ </span><span>cat</span><span> </span><span>try.py</span></span> <span><span>import </span><span>math</span><span> </span><span># ruff: ignore[unused-import]</span></span></code></pre></figure></div> <p>You can find the full specification for all of these comments in the <a href=\"https://docs.astral.sh/ruff/linter/#comments\">documentation</a>.</p> <h3><span id=\"fixes-are-now-shown-in-check-and-format-check-output\"></span>Fixes are now shown in <code>check</code> and <code>format --check</code> output <a href=\"https://astral.sh/blog/ruff-v0.16.0#fixes-are-now-shown-in-check-and-format-check-output\">#</a></h3> <p>Ruff now shows the diff for linter and formatter fixes when rendering diagnostics.</p> <p>Both the <code>check</code> and <code>format</code> subcommands have long supported the <code>--diff</code> flag for showing the changes introduced by applying fixes with <code>check --fix</code> or <code>format</code>, but this was separate from the normal output and suppressed the accompanying explanatory diagnostics. In v0.16, available fixes are now shown as part of the default <code>full</code> output format, rendered below the <code>help</code> subdiagnostic:</p> <img src=\"https://astral.sh/static/PNG/Ruff_v_0_16_0_check_fixes.png\" alt=\"Ruff check output showing the diff for an unused-import fix\"> <p>The same is true for <code>format --check</code>. Given the following input:</p> <div data-rehype-pretty-code-fragment><figure><pre><code data-language=\"py\" data-theme=\"default\"><span><span># example.py</span></span> <span></span> <span><span>if</span><span> </span><span>True</span><span>:</span></span> <span><span> </span><span>pass</span></span> <span><span>elif</span><span> </span><span>False</span><span>:</span></span> <span><span> </span><span>pass</span></span></code></pre></figure></div> <p>The formatter produces:</p> <img src=\"https://astral.sh/static/PNG/Ruff_v_0_16_0_format_fixes.png\" alt=\"Ruff formatter output showing the diff for an unformatted file\"> <p><code>format --check</code> also now supports the full selection of output formats supported by the linter. You can use this to obtain machine-readable JSON output or produce the formats expected by GitHub and GitLab to render annotations in CI, as just a couple of examples. See the CLI help or <a href=\"https://docs.astral.sh/ruff/settings/#output-format\">documentation</a> for the full list of supported formats.</p> <p>One final note on output formats is that there is a small breaking change to the JSON output in v0.16. The <code>filename</code>, <code>location</code>, <code>end_location</code>, <code>fix.edits[].location</code>, and <code>fix.edits[].end_location</code> fields may now be <code>null</code> rather than defaulting to the empty string and row 1, column 1, respectively. This should affect very few of Ruff's existing diagnostics but better reflects the internal diagnostic representation and may become more common in future rules.</p> <h2><span id=\"rule-stabilizations\"></span>Rule stabilizations <a href=\"https://astral.sh/blog/ruff-v0.16.0#rule-stabilizations\">#</a></h2> <p>The following rules have been stabilized and are no longer in <a href=\"https://docs.astral.sh/ruff/preview/\">preview</a>:</p> <ul> <li><a href=\"https://docs.astral.sh/ruff/rules/airflow3-incompatible-function-signature\"><code>airflow3-incompatible-function-signature</code></a> (<code>AIR303</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/missing-copyright-notice\"><code>missing-copyright-notice</code></a> (<code>CPY001</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/unnecessary-from-float\"><code>unnecessary-from-float</code></a> (<code>FURB164</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/sorted-min-max\"><code>sorted-min-max</code></a> (<code>FURB192</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/implicit-string-concatenation-in-collection-literal\"><code>implicit-string-concatenation-in-collection-literal</code></a> (<code>ISC004</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/log-exception-outside-except-handler\"><code>log-exception-outside-except-handler</code></a> (<code>LOG004</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/invalid-bool-return-type\"><code>invalid-bool-return-type</code></a> (<code>PLE0304</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/too-many-positional-arguments\"><code>too-many-positional-arguments</code></a> (<code>PLR0917</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/stop-iteration-return\"><code>stop-iteration-return</code></a> (<code>PLR1708</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/none-not-at-end-of-union\"><code>none-not-at-end-of-union</code></a> (<code>RUF036</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/access-annotations-from-class-dict\"><code>access-annotations-from-class-dict</code></a> (<code>RUF063</code>)</li> <li><a href=\"https://docs.astral.sh/ruff/rules/duplicate-entry-in-dunder-all\"><code>duplicate-entry-in-dunder-all</code></a> (<code>RUF068</code>)</li> </ul> <h2><span id=\"other-behavior-stabilizations\"></span>Other behavior stabilizations <a href=\"https://astral.sh/blog/ruff-v0.16.0#other-behavior-stabilizations\">#</a></h2> <p>This release also stabilizes some additional behavior, previously only available in <a href=\"https://docs.astral.sh/ruff/preview/\">preview mode</a>:</p> <ul> <li><a href=\"https://docs.astral.sh/ruff/rules/blind-except\"><code>blind-except</code></a> (<code>BLE001</code>) is now suppressed when the exception is logged via <code>logging</code> methods other than <code>critical</code>, <code>error</code> and <code>exception</code>.</li> <li><a href=\"https://docs.astral.sh/ruff/rules/future-required-type-annotation\"><code>future-required-type-annotation</code></a> (<code>FA102</code>) now checks for additional <a href=\"https://peps.python.org/pep-0585/\">PEP 585</a>-compatible APIs, such as those from <code>collections.abc</code>.</li> <li><a href=\"https://docs.astral.sh/ruff/rules/f-string-in-get-text-func-call\"><code>f-string-in-get-text-func-call</code></a> (<code>INT001</code>), <a href=\"https://docs.astral.sh/ruff/rules/format-in-get-text-func-call\"><code>format-in-get-text-func-call</code></a> (<code>INT002</code>), and <a href=\"https://docs.astral.sh/ruff/rules/printf-in-get-text-func-call\"><code>printf-in-get-text-func-call</code></a> (<code>INT003</code>) now check for additional common ways of using the <code>gettext</code> module, such as assigning it to <code>builtins._</code>.</li> <li><a href=\"https://docs.astral.sh/ruff/rules/suspicious-url-open-usage\"><code>suspicious-url-open-usage</code></a> (<code>S310</code>) now resolves local string literal bindings to avoid more false positives.</li> <li><a href=\"https://docs.astral.sh/ruff/rules/snmp-insecure-version\"><code>snmp-insecure-version</code></a> (<code>S508</code>) and <a href=\"https://docs.astral.sh/ruff/rules/snmp-weak-cryptography\"><code>snmp-weak-cryptography</code></a> (<code>S509</code>) now support the recommended API from newer versions of PySNMP.</li> <li><a href=\"https://docs.astral.sh/ruff/rules/typing-text-str-alias\"><code>typing-text-str-alias</code></a> (<code>UP019</code>) now recognizes <code>typing_extensions.Text</code> in addition to <code>typing.Text</code>.</li> </ul> <h2><span id=\"thank-you\"></span>Thank you! <a href=\"https://astral.sh/blog/ruff-v0.16.0#thank-you\">#</a></h2> <p>Thank you to everyone who provided feedback regarding the changes included in Ruff's <a href=\"https://docs.astral.sh/ruff/settings/#preview\">preview mode</a> and to our contributors. It's an honor building Ruff with you!</p> <hr> <p>View the full changelog on <a href=\"https://github.com/astral-sh/ruff/releases/tag/0.16.0\">GitHub</a>.</p> <p>Read more about <a href=\"https://astral.sh/about\">Astral</a> — the company behind Ruff.</p> <p><em>Thanks to Zanie Blue, David Peter, Micha Reiser, and Alex Waygood who contributed to this blog post.</em></p></article></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fastral.sh%2Fblog%2Fruff-v0.16.0\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"The next stable version of Ruff is out now.","image":"https://astral.sh/static/PNG/Ruff_v_0_16_0.png","authors":[{"name":null,"url":"https://astral.sh/blog/ruff-v0.16.0","avatar":"https://astral.sh/static/favicon-32x32.png"}],"id":"49056112","url":"https://astral.sh/blog/ruff-v0.16.0","external_url":"https://news.ycombinator.com/item?id=49056112","date_published":"2026-07-26T09:01:39Z"},{"title":"Netflix employee fired for sharing personal details in retreat trust exercise","content_html":"<div class=\"page\" id=\"readability-page-1\"><div id=\"layout-item-main\"> <div> <p><img decoding=\"async\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOn0lEQVR4Xu3VsQnDQBBFwd3AakTuv8UTOHQuXjJXwC0MH97OzBmPAAECBAgQeFVgd+ecM/f9nev6zArwq94+J0CAAAECPwEBNgQCBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBAQYBsgQIAAAQKBgAAH6E4SIECAAAEBtgECBAgQIBAICHCA7iQBAgQIEBBgGyBAgAABAoGAAAfoThIgQIAAAQG2AQIECBAgEAgIcIDuJAECBAgQEGAbIECAAAECgYAAB+hOEiBAgAABAbYBAgQIECAQCAhwgO4kAQIECBD4D/ADV99NUy08rgcAAAAASUVORK5CYII=\" width=\"100\" height=\"100\" id=\"nyp-player-lcp-overlay\" fetchpriority=\"high\" alt></p></div> <div> <p>A <a href=\"https://nypost.com/2026/02/27/media/how-the-susan-rice-snafu-cost-netflix-on-home-stretch-of-warner-bros-discovery-deal/\">Netflix executive</a> was fired from his $1.1 million a year job after revealing during a “trust exercise” at a work retreat that he had taken <a href=\"https://nypost.com/2025/10/22/health/ketamine-therapy-patients-say-drug-gave-them-another-shot-at-life/\">medically prescribed ketamine</a>, a lawsuit has claimed.</p> <p>Kevin Baillie, who was vice president and head of creative at Eyeline Studios, is suing the company after it launched an investigation into his comments that ultimately ended in his firing, the papers say.&#160;</p> <p>Baillie, who’s been on the visual effects team for “Pirates of the Caribbean” and the Harry Potter franchise, says he took the drug under medical supervision in October and November of 2022 at a Santa Barbara clinic.</p> <figure><div><p><a href=\"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/#\" aria-controls=\"nyp-slideshow-modal\" data-slideshow-modal=\"trigger\" title=\"Open a slideshow of all 5 article images.\" aria-label=\"Open a slideshow of all 5 article images.\" data-slideshow-slide-number=\"1\" data-slideshow-slides-total=\"5\"><img loading=\"lazy\" decoding=\"async\" width=\"443\" height=\"590\" src=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?w=768\" alt=\"Kevin Baillie poses for a selfie with a red Ferrari race car.\" srcset=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?quality=75&strip=all 1440w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=225,300&quality=75&strip=all 225w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=768,1024&quality=75&strip=all 768w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=1152,1536&quality=75&strip=all 1152w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=450,600&quality=75&strip=all 450w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=442,589&quality=75&strip=all 442w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=372,496&quality=75&strip=all 372w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=483,644&quality=75&strip=all 483w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=368,491&quality=75&strip=all 368w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=212,282&quality=75&strip=all 212w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=155,206&quality=75&strip=all 155w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=53,70&quality=75&strip=all 53w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=30,40&quality=75&strip=all 30w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=41,54&quality=75&strip=all 41w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=150,200&quality=75&strip=all 150w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=231,308&quality=75&strip=all 231w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=322,429&quality=75&strip=all 322w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=300,400&quality=75&strip=all 300w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=331,441&quality=75&strip=all 331w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=45,60&quality=75&strip=all 45w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=60,80&quality=75&strip=all 60w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=1200,1600&quality=75&strip=all 1200w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=44,58&quality=75&strip=all 44w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=117,156&quality=75&strip=all 117w, https://nypost.com/wp-content/uploads/sites/2/2026/07/www-instagram-com-p-dnqvpn5y4g1-135617721.jpg?resize=38,50&quality=75&strip=all 38w\" sizes=\"(max-width: 443px) 100vw, 443px\"></a></p></div><figcaption>Kevin Baillie, ex-vice president and head of creative at Eyeline Studios, a division of Netflix. <span>Instagram/fxnerd</span></figcaption></figure> <figure><div><p><a href=\"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/#\" aria-controls=\"nyp-slideshow-modal\" data-slideshow-modal=\"trigger\" title=\"Open a slideshow of all 5 article images.\" aria-label=\"Open a slideshow of all 5 article images.\" data-slideshow-slide-number=\"2\" data-slideshow-slides-total=\"5\"><img loading=\"lazy\" decoding=\"async\" width=\"879\" height=\"590\" src=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?w=1024\" alt=\"Joe Letteri and Kevin Baillie posing with their awards at the 24th Annual Satellite Awards.\" srcset=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?quality=75&strip=all 3504w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=300,200&quality=75&strip=all 300w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=768,515&quality=75&strip=all 768w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=1024,687&quality=75&strip=all 1024w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=1536,1031&quality=75&strip=all 1536w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=2048,1374&quality=75&strip=all 2048w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=600,403&quality=75&strip=all 600w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=878,589&quality=75&strip=all 878w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=739,496&quality=75&strip=all 739w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=576,386&quality=75&strip=all 576w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=440,295&quality=75&strip=all 440w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=420,282&quality=75&strip=all 420w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=389,260&quality=75&strip=all 389w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=340,227&quality=75&strip=all 340w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=306,204&quality=75&strip=all 306w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=280,187&quality=75&strip=all 280w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=260,174&quality=75&strip=all 260w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=246,164&quality=75&strip=all 246w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=234,156&quality=75&strip=all 234w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=195,130&quality=75&strip=all 195w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=180,121&quality=75&strip=all 180w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=171,114&quality=75&strip=all 171w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=160,107&quality=75&strip=all 160w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=144,96&quality=75&strip=all 144w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=107,71&quality=75&strip=all 107w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=93,62&quality=75&strip=all 93w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=84,56&quality=75&strip=all 84w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=60,40&quality=75&strip=all 60w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=104,70&quality=75&strip=all 104w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=80,54&quality=75&strip=all 80w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=200,134&quality=75&strip=all 200w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=231,155&quality=75&strip=all 231w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=322,216&quality=75&strip=all 322w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=657,441&quality=75&strip=all 657w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=89,60&quality=75&strip=all 89w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=119,80&quality=75&strip=all 119w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=1200,805&quality=75&strip=all 1200w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=87,58&quality=75&strip=all 87w, https://nypost.com/wp-content/uploads/sites/2/2026/07/press-room-viceroy-l-ermitage-135654431.jpg?resize=50,34&quality=75&strip=all 50w\" sizes=\"(max-width: 879px) 100vw, 879px\"></a></p></div><figcaption>Kevin Baillie (right) at the 24th Satellite Awards in Beverly Hills. <span>I Hasegawa/HNW-Photo/Plux / Shutterstock</span></figcaption></figure> <p>He sought the treatment for clinical depression after the death of his mother, according to the suit.</p> <p>During what’s called a “Vulnerability-Trust exercise” at a January 2026 retreat at the exclusive Sendero Ranch, a Northern California property owned by Netflix, Baillie shared with his colleagues that he had undergone the treatment, the suit says.</p> <p>Baillie claims he explained the reason why he had taken the drug but was <a href=\"https://nypost.com/2026/05/11/business/netflix-is-spying-on-children-and-selling-user-data-texas-ag-lawsuit/\">investigated by Netflix</a>. On March 18, 2026 a company investigator brought the incident up, “in a manner suggesting suspicion of recreational drug use,” the suit reads.</p> <figure><div><p><a href=\"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/#\" aria-controls=\"nyp-slideshow-modal\" data-slideshow-modal=\"trigger\" title=\"Open a slideshow of all 5 article images.\" aria-label=\"Open a slideshow of all 5 article images.\" data-slideshow-slide-number=\"3\" data-slideshow-slides-total=\"5\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"590\" src=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?w=1024\" alt=\"A wooden sign for &quot;Sendero Ranch&quot; hangs above a green metal gate, with a road extending into a desert landscape with mountains in the background.\" srcset=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?quality=75&strip=all 1206w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=150,150&quality=75&strip=all 150w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=300,300&quality=75&strip=all 300w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=768,768&quality=75&strip=all 768w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=1024,1024&quality=75&strip=all 1024w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=600,600&quality=75&strip=all 600w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=589,589&quality=75&strip=all 589w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=496,496&quality=75&strip=all 496w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=576,576&quality=75&strip=all 576w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=440,440&quality=75&strip=all 440w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=282,282&quality=75&strip=all 282w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=180,180&quality=75&strip=all 180w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=71,71&quality=75&strip=all 71w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=40,40&quality=75&strip=all 40w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=70,70&quality=75&strip=all 70w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=54,54&quality=75&strip=all 54w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=200,200&quality=75&strip=all 200w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=231,231&quality=75&strip=all 231w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=322,322&quality=75&strip=all 322w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=441,441&quality=75&strip=all 441w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=60,60&quality=75&strip=all 60w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=80,80&quality=75&strip=all 80w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=1200,1200&quality=75&strip=all 1200w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=58,58&quality=75&strip=all 58w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=156,156&quality=75&strip=all 156w, https://nypost.com/wp-content/uploads/sites/2/2026/07/sendero-ranch-owned-netflix-135618201.jpg?resize=50,50&quality=75&strip=all 50w\" sizes=\"(max-width: 590px) 100vw, 590px\"></a></p></div><figcaption>The retreat took place at the exclusive Sendero Ranch, a Northern California property owned by Netflix. <span>Instagram/cecimeseeds</span></figcaption></figure> <figure><div><p><a href=\"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/#\" aria-controls=\"nyp-slideshow-modal\" data-slideshow-modal=\"trigger\" title=\"Open a slideshow of all 5 article images.\" aria-label=\"Open a slideshow of all 5 article images.\" data-slideshow-slide-number=\"4\" data-slideshow-slides-total=\"5\"><img loading=\"lazy\" decoding=\"async\" width=\"472\" height=\"590\" src=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?w=819\" alt=\"A man in a &quot;Star Wars Episode One&quot; jacket looks up at a movie marquee advertising &quot;Star Wars Episode I&quot;.\" srcset=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?quality=75&strip=all 1440w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=240,300&quality=75&strip=all 240w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=768,960&quality=75&strip=all 768w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=819,1024&quality=75&strip=all 819w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=1229,1536&quality=75&strip=all 1229w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=480,600&quality=75&strip=all 480w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=471,589&quality=75&strip=all 471w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=397,496&quality=75&strip=all 397w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=515,644&quality=75&strip=all 515w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=393,491&quality=75&strip=all 393w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=226,282&quality=75&strip=all 226w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=165,206&quality=75&strip=all 165w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=57,71&quality=75&strip=all 57w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=32,40&quality=75&strip=all 32w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=56,70&quality=75&strip=all 56w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=43,54&quality=75&strip=all 43w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=160,200&quality=75&strip=all 160w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=231,289&quality=75&strip=all 231w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=322,403&quality=75&strip=all 322w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=300,375&quality=75&strip=all 300w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=353,441&quality=75&strip=all 353w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=48,60&quality=75&strip=all 48w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=64,80&quality=75&strip=all 64w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=1200,1500&quality=75&strip=all 1200w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=46,58&quality=75&strip=all 46w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=125,156&quality=75&strip=all 125w, https://nypost.com/wp-content/uploads/sites/2/2026/07/25th-anniversary-release-episode-i-135620062.jpg?resize=40,50&quality=75&strip=all 40w\" sizes=\"(max-width: 472px) 100vw, 472px\"></a></p></div><figcaption>Baillie was fired in April, with Netflix’s attorney confirming, “The ketamine therapy issue has factored into the termination.” <span>Instagram/fxnerd</span></figcaption></figure> <p>The executive was fired in April with the company’s attorney confirming “the ketamine therapy issue has factored into the termination,” the papers say, and go on to suggest Baille was denied up to a year of severance pay.</p> <p>Baillie says in the lawsuit the “scope” of the investigation related to alleged profanity and drinking. He had been warned during his performance review that he should “drop one or two less f-bombs but don’t stop entirely.”</p> <p>It goes on to say that at the same retreat Baillie drank a Guinness standing on his head, after sharing that he had learned the trick from his former father in law during a conversation inspired by the trust session.</p> <p>“His colleague immediately asked for a demonstration, rather than withhold the openness that the session had encouraged, he performed the trick,” the papers say.</p> <figure><div><p><a href=\"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/#\" aria-controls=\"nyp-slideshow-modal\" data-slideshow-modal=\"trigger\" title=\"Open a slideshow of all 5 article images.\" aria-label=\"Open a slideshow of all 5 article images.\" data-slideshow-slide-number=\"5\" data-slideshow-slides-total=\"5\"><img loading=\"lazy\" decoding=\"async\" width=\"174\" height=\"235\" src=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg\" alt=\"Ribbon cutting at Netflix Eyeline Studios opening in Hyderabad with Jeff Shapiro, second person from the left.\" srcset=\"https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?quality=75&strip=all 174w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=153,206&quality=75&strip=all 153w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=53,71&quality=75&strip=all 53w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=30,40&quality=75&strip=all 30w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=52,70&quality=75&strip=all 52w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=40,54&quality=75&strip=all 40w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=148,200&quality=75&strip=all 148w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=44,60&quality=75&strip=all 44w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=59,80&quality=75&strip=all 59w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=43,58&quality=75&strip=all 43w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=116,156&quality=75&strip=all 116w, https://nypost.com/wp-content/uploads/sites/2/2026/07/ribbon-cutting-netflix-eyeline-studios-135619916.jpg?resize=37,50&quality=75&strip=all 37w\" sizes=\"(max-width: 174px) 100vw, 174px\"></a></p></div><figcaption>Baille also suggests an alcohol-fueled company environment bolstered by Eyeline Studios CEO Jeff Shapiro (pictured). <span>Netflix</span></figcaption></figure> <div data-source-unit=\"Inline Newsletter Module Cali - Morning Report\"> <div> <h3> Sign up for the California Morning Report newsletter </h3> <p> California's top news, sports and entertainment delivered to your inbox every day. </p> </div> <p> </p><h3> Thanks for signing up! </h3> <p></p> </div> <p>Baille also paints a picture of an allegedly alcohol-fueled company environment encouraged by the Eyeline Studios CEO Jeff Shapiro.</p> <p>The lawsuit alleged “alcohol consumption was company-sponsored, leadership-modeled and condoned”, with multiple examples of how Shapiro “set the cultural tone concerning alcohol at the executive level”.</p> <p>The <a href=\"https://nypost.com/2026/07/27/us-news/netflix-lawsuit-details-scandalous-alcohol-fueled-office-culture/\">documents claimed Shapiro</a> on one occasion purchased beer at a corner store and brought it to a company car ride to the Visual Effects Society Awards for staff to share.</p> <p>Baillie claims he also witnessed the CEO consume alcohol with Netflix and Eyeline employees at his own welcome dinner in September 2024, the Netflix Annual Business Review events in March 2025 and even a Lakers game attended by Netflix execs including Shapiro’s direct supervisor in February 2026. </p> <p>All up, Baillie’s attorneys provided over half a dozen examples of the CEO being present at a work event with a drink in his hand, according to court papers. </p> <hr> <h2><strong>Download The California Post App, follow us on social, and subscribe to our newsletters </strong></h2> <div> <p><strong>California Post News</strong>: <a href=\"https://www.facebook.com/TheCaliforniaPost/\" target=\"_blank\" rel=\"noopener\">Facebook</a>, <a href=\"https://www.instagram.com/californiapost\" target=\"_blank\" rel=\"noopener\">Instagram</a>, <a href=\"https://www.tiktok.com/@CaliforniaPost\" target=\"_blank\" rel=\"noopener\">TikTok</a>, <a href=\"https://x.com/californiapost\" target=\"_blank\" rel=\"noopener\">X</a>, <a href=\"https://www.youtube.com/@thecaliforniapost\" target=\"_blank\" rel=\"noopener\">YouTube</a>, <a href=\"https://www.whatsapp.com/channel/0029Vb6a2IV1NCrL6q2AWq0E\" target=\"_blank\" rel=\"noopener\">WhatsApp</a>, <a href=\"http://linkedin.com/company/californiapost\" target=\"_blank\" rel=\"noopener\">LinkedIn</a><br><strong>California Post Sports</strong> <a href=\"https://www.facebook.com/capostsports/\" target=\"_blank\" rel=\"noopener\">Facebook</a>, <a href=\"https://www.instagram.com/capostsports/?hl=en\" target=\"_blank\" rel=\"noopener\">Instagram</a>, <a href=\"https://www.tiktok.com/@capostsports\" target=\"_blank\" rel=\"noopener\">TikTok</a>, <a href=\"https://www.youtube.com/@CaliforniaPostSports\" target=\"_blank\" rel=\"noopener\">YouTube</a>, <a href=\"https://x.com/capostsports\" target=\"_blank\" rel=\"noopener\">X</a><br><strong>California Post </strong><a href=\"https://x.com/californiapost\" target=\"_blank\" rel=\"noopener\">Opinion</a> <br><strong>California Post Newsletters</strong>: <a href=\"https://email.nypost.com/#california-post\" target=\"_blank\" rel=\"noopener\">Sign up here!</a><br><strong>California Post App</strong>: <a href=\"https://apps.apple.com/us/app/california-post/id6751343487\" target=\"_blank\" rel=\"noopener\">Download here!</a><br><strong>Home delivery</strong>: <a href=\"https://subscribe.californiapost.com/defaultCAP\">Sign up here!</a><a href=\"https://apps.apple.com/us/app/california-post/id6751343487\" target=\"_blank\" rel=\"noopener\"><br></a><strong>Page Six Hollywood</strong>: <a href=\"https://pagesix.com/hollywood-signup/\" target=\"_blank\" rel=\"noopener\">Sign up here!</a></p> <hr> </div> <p>In addition to hosting multiple parties, Shapiro also had a personal bar in his office “from which he served alcohol (to Baille) including after a successful meeting with <a href=\"https://nypost.com/2026/02/25/media/netflixs-ted-sarandos-heads-to-dc-to-save-warner-bros-deal-as-antitrust-concerns-intensify/\">Netflix’s CEO Ted Sarandos</a>,” according to the papers.</p> <p>Baillie is asking for a jury trial, compensatory damages, lost wages, damages for emotional distress, and punitive damages.</p> <p>Netflix and Eyeline were contacted for comment.</p> </div>   </div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fnypost.com%2F2026%2F07%2F26%2Fus-news%2Fnetflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit%2F\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"He was fired from his $1.1 million a year job after revealing that he had taken medically prescribed Ketamine at a “Trust exercise”","image":"https://nypost.com/wp-content/uploads/sites/2/2026/07/netflix-exec-ketamine-firing-trust-exercise-comp.jpg?quality=75&strip=all&w=1200","authors":[{"name":"California Post","url":"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/","avatar":"https://nypost.com/wp-content/themes/nypost/static/images/favicons/favicon.ico"}],"id":"49076923","url":"https://nypost.com/2026/07/26/us-news/netflix-exec-goes-ballistic-after-being-fired-for-stunning-trust-exercise-confession-at-retreat-suit/","external_url":"https://news.ycombinator.com/item?id=49076923","date_published":"2026-07-27T23:21:37Z"},{"id":"49057574","url":"https://www.wsj.com/tech/google-discloses-94-1-billion-in-spacex-stock-marking-6-stake-91655d7c","external_url":"https://news.ycombinator.com/item?id=49057574","title":"Google Discloses $94.1B in SpaceX Stock, Marking 6% Stake","date_published":"2026-07-26T12:43:21Z"},{"title":"Decathlon Germany adds Wero payment option to decathlon.de website","content_html":"<div class=\"page\" id=\"readability-page-1\"><p>Decathlon didn’t just add a new payment button to its German checkout page. It handed European banks their first big-box sporting goods test case at a moment when competition in digital payments is intensifying and the push for EU-made payment infrastructure is growing.</p><div><p><strong>Decathlon</strong> switched on <a href=\"https://wero-wallet.eu/de/uber\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Wero</strong></a> on decathlon.de on July 20, making Germany the first market in the French group’s international footprint to carry the European payment scheme.</p> <p>Wero is the retail payment product of the <strong>European Payments Initiative (EPI)</strong>, a consortium of banks and payment providers backed by 18 shareholder institutions and more than 50 members across the region. It routes payments directly between bank accounts in real time, authorized in the customer’s banking app via fingerprint or face recognition, so the merchant never receives a card number.</p> <p>Archive reporting shows the scale Wero is still building toward: 43 million active users across the region in August 2025, 46 million by November 2025 alongside the retail launch, and around 56 million by the time of the Decathlon rollout in July 2026, with German registrations rising from 1.3 million to 1.8 million over the same period.</p> <p>Decathlon joins a merchant roster that already includes Eventim Live, with Lidl, Rossmann and Hornbach expected to follow.</p> <h2 id=\"The_insider_why\"><strong>The insider why</strong></h2> <p>For Decathlon, the incentive is not just optics. <strong>Patrick Müller</strong>, chief digital and chief marketing officer at Decathlon Germany, tied the launch to the retailer’s membership program, saying the connection delivers “a genuine added value” on every purchase. That frames Wero as a loyalty and retention tool, not only a checkout option. Industry estimates commonly place card network processing costs at around 1 to 2 percent of transaction value in fees to Visa and Mastercard. An account to account rail that bypasses that layer can be a direct margin lever for a retailer operating at scale on thin sporting goods margins.</p> <h2 id=\"The_rollout_plan_extends_beyond_the_website\"><strong>The rollout plan extends beyond the website.</strong></h2> <p>Decathlon says it is preparing the technical integration needed to bring Wero to its roughly 110 physical stores in Germany, with the goal of a consistent payment experience across online and offline channels. A joint activation campaign with EPI is scheduled for October: a six week promotion offering a €10 voucher to customers who pay with Wero on <a href=\"http://decathlon.de/\">decathlon.de</a>, funded entirely by EPI rather than Decathlon.</p> <h2 id=\"The_challenge_and_the_promise\">The challenge and the promise</h2> <p>EPI’s willingness to fund customer incentives points to the network’s core problem. Payment schemes live or die on how many merchants and consumers show up at the same time, and Wero still lacks in store point of sale functionality. That capability is not expected until 2026 and 2027. <strong>Joachim Schmalzl</strong>, EPI’s supervisory board chairman, has acknowledged the initiative still faces real hurdles even as he called the ecommerce launch a milestone toward “a sovereign European payment system.”</p> <p>Decathlon being among the first to implement the system can help test Wero’s promise: lower processing costs, tighter loyalty integration and one less transaction fee flowing to a US based network, provided Wero can close the gap between its ambitions and its still limited in store reach.</p></div></div>\n<img src=\"https://readable.news/api/telemetry?url=https%3A%2F%2Fwww.sgieurope.com%2Fe-commerce%2Fdecathlon-germany-launches-wero-payment-on-its-website%2F122397.article\" width=\"1\" height=\"1\" alt=\"\">","excerpt":"Decathlon adds the European bank-backed Wero payment option to decathlon.de, with in-store rollout in preparation","image":"https://d1f00kj7ad54bu.cloudfront.net/Pictures/1024x536/9/6/4/60964_wero_807274_crop.jpg","authors":[{"name":"Sporting Goods Intelligence","url":"https://www.sgieurope.com/e-commerce/decathlon-germany-launches-wero-payment-on-its-website/122397.article","avatar":"https://www.sgieurope.com/magazine/dest/graphics/favicons/favicon-32x32.png"}],"id":"49072310","url":"https://www.sgieurope.com/e-commerce/decathlon-germany-launches-wero-payment-on-its-website/122397.article","external_url":"https://news.ycombinator.com/item?id=49072310","date_published":"2026-07-27T16:49:08Z"}]}