Skip to content

Releases: artyom-ivanov/stronghold-agent

StrongholdWidget v1.0.1

Choose a tag to compare

@artyom-ivanov artyom-ivanov released this 27 Jul 12:01

Fixed

Repeated Keychain prompts. Claude Code writes its Claude Code-credentials item with an apple-tool: ACL partition list and rewrites it on every token refresh, which resets that list. Reading it with SecItemCopyMatching from a Developer ID app presents teamid:<team>, fails the partition check, and macOS shows a Keychain prompt on the next poll — so "Always Allow" only survived until Claude Code refreshed again.

The widget now reads through the Apple-signed /usr/bin/security, which matches the partition the item already carries, so the read stays silent.

Fewer Keychain reads. The access token is cached until its expiresAt (with a small skew), so the Keychain is touched roughly once per token lifetime instead of on every 120-second poll. A 401 drops the cache and re-reads once.

StrongholdWidget v1.0.0

Choose a tag to compare

@artyom-ivanov artyom-ivanov released this 25 Jul 16:46

The Stronghold scribe sits in your screen corner and keeps your ledger: Claude Code / Codex usage limits in his book, spoken reports on hover.

Install

Download StrongholdWidget.dmg below, open it, drag the app to Applications. Signed and notarized (macOS 14.4+) — double-click to launch.

On first launch the scribe offers to connect Claude Code — click Grant access; macOS asks once to read the Claude Code login from your Keychain, click Always Allow. Codex needs nothing.

Highlights

  • Remaining 5-hour / weekly limits in the book; mood and ink color track how much you have left.
  • Today's token spend in USD (API-price equivalent), from local transcripts.
  • Hover for a spoken, in-character report with reset times; drag him anywhere, snaps to edges.
  • Claude Code and Codex, switchable from the gear menu; launch-at-login toggle.

Sources & privacy

Claude limits come from Anthropic's usage endpoint (the same one Claude Code's /usage uses), authenticated with your existing Claude Code login token — polled gently every couple of minutes, with backoff. Claude spend and all Codex data are read from local files. No separate login, nothing stored.