The Daily Drip

What's up with the what's up. Traced to the source.

Builders: Free rebuilt prompts Get The Drip Pack — $27 Local businesses: Free website teardown

agents · review · first seen Nov 4, 10:33 UTC

Anthropic adds Claude Code sign-in expiry warnings

Claude Code 2.1.318 shipped sign-in expiry information in JSON results and a warning in text mode. Builders using a stored claude.ai sign-in can now check its end date or notice a warning before it ends.

L0 · primary1 source2 claims checked4 min read

In short

  • 2.1.318 shipped credential_expires_at in claude -p JSON results.
  • Text mode shipped a one-line stderr warning starting 10 days before a stored claude.ai sign-in ends.
  • Check actual output before treating these signals as a complete expiry-handling policy.

What shipped

Claude Code 2.1.318 shipped credential_expires_at in claude -p JSON results. The release note describes it as the date a stored claude.ai sign-in ends. It also says claude auth status now exposes that date as loginExpiresAt. These are two named places to inspect expiry information, not a statement about every form of authentication. If your workflow reads claude -p JSON, the new field is the change relevant to that output. [1]

The release also shipped a one-line warning on stderr for claude -p text output. It starts 10 days before a stored claude.ai sign-in ends. Each part of that description matters: the specified output is text mode, the stream is stderr, and the subject is a stored claude.ai sign-in. The warning is not described as part of the text response. A workflow that reads only stdout would not capture a line written to stderr. [1]

I read these as visibility changes, not a documented renewal procedure. The release note identifies where the expiry date appears and when the text-mode warning begins. It does not say that Claude Code renews a stored sign-in automatically. I would use the new signals to inform a sign-in maintenance decision, rather than treat their presence as evidence that expiry is handled for me. [1][2]

Why it matters if you build

For a workflow that consumes claude -p JSON, credential_expires_at gives you a named place to look for the end date without relying on the text-mode warning. Inspect an actual result before making a downstream rule depend on the field. The supplied note does not define its value format, say whether it is always present, or describe its value when there is no stored claude.ai sign-in. The change supplies an expiry signal; it does not supply a complete policy for using one. [1][2]

For a workflow that uses claude -p text output, keep stderr visible during a check. A run in the specified 10-day window can carry the warning outside the text output. Separately capturing stdout and stderr will let you see which stream carries what. This is a reason to examine your own command output, not evidence that an existing workflow has already missed a warning. The note does not provide the warning’s exact wording. [1]

I would not treat this as a cost or performance change. Neither the new field nor the warning specifies a rate, usage allowance, runtime improvement, or the consequence of passing the end date. The release does establish a 10-day warning window for the stated text-output case. It does not establish a comparable warning schedule for JSON results or auth status. Keep those distinctions in view before changing a production check. [1][2]

How to try it today

  1. Check that the Claude Code version you are evaluating is 2.1.318.
  2. Run claude auth status and look for loginExpiresAt for a stored claude.ai sign-in.
  3. Run claude -p with JSON results in your normal workflow and inspect credential_expires_at.
  4. Run claude -p in text mode while observing stderr separately from the text output.
  5. If the stored sign-in is within its last 10 days, check for the one-line stderr warning; do not expect it earlier on the basis of this note.

What we checked

Every claim below was walked down the source ladder. The rung is how close the source is to the thing itself; the tense is the source's own.

  1. shipped L0 · primary

    Claude Code 2.1.318 adds credential_expires_at to claude -p JSON results.

    per GitHub releases · anthropics/claude-code (L0)
  2. shipped L0 · primary

    Claude Code 2.1.318 adds a one-line stderr warning to claude -p text output starting 10 days before a stored claude.ai sign-in ends.

    per GitHub releases · anthropics/claude-code (L0)

What is not confirmed

The supplied release note does not define the expiry value’s format, its presence without a stored claude.ai sign-in, or whether other sign-in methods receive either signal. It does not give the warning’s exact words, specify a renewal action, or say what a command does after the sign-in ends. It establishes no measured cost or reliability effect. [1][2]

Who should act, who should wait

Move now if you maintain a workflow that reads claude -p JSON or uses claude -p text output with a stored claude.ai sign-in. Check the field or stderr in your own output, then decide whether your process needs to surface that information. Wait before designing automatic renewal or a hard failure policy from this note alone; neither behavior is specified. If you do not use a stored claude.ai sign-in, the supplied material does not establish an effect on your workflow. [1][2]

Sources

  • v2.1.318 — GitHub releases · anthropics/claude-code L0 · primary

One edition each morning. Every claim linked to its source.

Send me The Daily Drip each morning. I understand opens and clicks are counted to decide whether the edition is worth continuing, and I can unsubscribe in one click.