<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Statusline on Nick Liu - Software Engineer</title>
    <link>/tags/statusline/</link>
    <description>Recent content in Statusline on Nick Liu - Software Engineer</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>nickboy@users.noreply.github.com (Nick Liu)</managingEditor>
    <webMaster>nickboy@users.noreply.github.com (Nick Liu)</webMaster>
    <copyright>2026 Nick Liu</copyright>
    <lastBuildDate>Sun, 10 May 2026 22:48:37 -0700</lastBuildDate><atom:link href="/tags/statusline/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>I polled an undocumented endpoint for 18 hours. The data was on stdin.</title>
      <link>/posts/plan-usage-statusline-pivot/</link>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      <author>nickboy@users.noreply.github.com (Nick Liu)</author>
      <guid>/posts/plan-usage-statusline-pivot/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  &#xA;My daemon logged 111 consecutive HTTP 429s against `https://api.anthropic.com/api/oauth/usage` over an 18-hour stretch, with zero successful responses ever in its lifetime. The poller was reading `Retry-After: 272` and ignoring it. While I was arguing with the backoff, Claude Code was pushing the same `rate_limits.five_hour` and `rate_limits.seven_day` numbers to my statusline command every turn, on stdin, for free.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;(Quick framing: &lt;em&gt;Claude Code&lt;/em&gt; is Anthropic&amp;rsquo;s terminal CLI for Claude; &lt;em&gt;Claude Max&lt;/em&gt; is the higher-tier subscription plan with weekly and 5-hour usage windows. HTTP &lt;em&gt;429&lt;/em&gt; is &amp;ldquo;Too Many Requests&amp;rdquo; — the server&amp;rsquo;s polite way of saying &amp;ldquo;back off.&amp;rdquo; &lt;em&gt;Retry-After&lt;/em&gt; is the response header that tells the client how long to wait. &lt;em&gt;OAuth&lt;/em&gt; is the auth protocol Claude Code uses to talk to Anthropic on behalf of a logged-in user. And the &lt;em&gt;statusline&lt;/em&gt; — the same one I covered in &lt;a href=&#34;/posts/statusline-side-channel/&#34; &gt;the statusline side-channel post&lt;/a&gt; — is the script Claude Code spawns every turn with a JSON blob on stdin.)&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>The Claude Code statusline is a per-turn telemetry side channel</title>
      <link>/posts/statusline-side-channel/</link>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      <author>nickboy@users.noreply.github.com (Nick Liu)</author>
      <guid>/posts/statusline-side-channel/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  &#xA;Claude Code calls a custom statusline command every turn with a JSON payload on stdin. The payload includes the current context-window fill percentage, model, cost, and cwd. Nothing in the contract says you can only read it — you can fork it to anything you want, and the command stays a statusline.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;(Quick framing for anyone new to Claude Code: it&amp;rsquo;s Anthropic&amp;rsquo;s terminal CLI for Claude, and the &lt;em&gt;statusline&lt;/em&gt; is the configurable line of text it prints under your prompt every turn — like a shell prompt for the agent. You point at any script in &lt;code&gt;settings.local.json&lt;/code&gt;, Claude pipes a JSON object to it on stdin, and whatever the script writes to stdout becomes the visible line.)&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
