Skip to content

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 14 Aug 10:30
· 712 commits to main since this release

Account credentials were reachable over the local RPC socket

The /openai-account dialog sent whole stored account records to the sidebar, and those records carry the account's live access and refresh tokens. Anything talking to the plugin's loopback RPC socket, or anything that logged a command result, could read them.

The dialog now sends only what it displays — account id, type, label, and whether the account is enabled. Independently of that, the RPC boundary itself now strips credential-shaped fields from any command result and logs a warning naming them, so a future command cannot reintroduce this by forgetting to trim its own output.

Upgrading is worthwhile if you run the sidebar. Nothing is exposed off-machine: the socket is loopback-only and requires a per-process token. No tokens need rotating unless you have reason to distrust something else on the machine.

A busy account store no longer kills a session

Every session on a machine shares one account file and takes a lock to write it. Running many sessions at once could make a write wait long enough to time out, and two of those writes happened after a response had already arrived — so the session died and the completed, already-paid-for response was thrown away. Running 5 to 12 workers in parallel reproduced it reliably.

Those two writes only record bookkeeping that nothing else reads, so they are now allowed to fail quietly and log. Writes that save refreshed tokens still fail loudly, because losing one of those would sign you out. The wait window is also longer than the lock's own lifetime now, so an ordinarily busy store is no longer mistaken for a stuck one, and the timeout message says plainly that it was contention.

This addresses the crash. Reducing the contention itself is still to come.