- v1.7.4 · MIT licensed
+ v1.7.5 · MIT licensed
{TEST_COUNT.toLocaleString()} tests passing
diff --git a/package-lock.json b/package-lock.json
index 46c7bf3..1977331 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "sipcode",
- "version": "1.7.4",
+ "version": "1.7.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sipcode",
- "version": "1.7.4",
+ "version": "1.7.5",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
diff --git a/package.json b/package.json
index 35fa619..b46b1cf 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "sipcode",
- "version": "1.7.4",
+ "version": "1.7.5",
"mcpName": "io.github.Anuj7411/sipcode",
"description": "Sip your tokens, don't gulp them. Keep Claude Code's context clean: drift detection, re-read dedup, integrity scoring, AST-aware reads, and 16 MCP tools for Claude Desktop.",
"keywords": [
diff --git a/plugins/sipcode/.codex-plugin/plugin.json b/plugins/sipcode/.codex-plugin/plugin.json
index 9a17842..f6990aa 100644
--- a/plugins/sipcode/.codex-plugin/plugin.json
+++ b/plugins/sipcode/.codex-plugin/plugin.json
@@ -1,6 +1,6 @@
{
"name": "sipcode",
- "version": "1.7.4",
+ "version": "1.7.5",
"description": "Ask about your Codex usage in plain words: spend, usage limits, why a session was expensive, and whether Codex or Claude Code got worse after an update. Runs the Sipcode CLI on this computer, which reads your local Codex and Claude Code logs and makes no network calls.",
"author": {
"name": "Anuj Ojha",
diff --git a/plugins/sipcode/plugin.json b/plugins/sipcode/plugin.json
index 747bea8..d8fd9b3 100644
--- a/plugins/sipcode/plugin.json
+++ b/plugins/sipcode/plugin.json
@@ -1,7 +1,7 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "sipcode",
- "version": "1.7.4",
+ "version": "1.7.5",
"description": "Ask about your Codex usage in plain words: spend, usage limits, why a session was expensive, and whether Codex or Claude Code got worse after an update. Runs the Sipcode CLI on this computer, which reads your local Codex and Claude Code logs and makes no network calls.",
"author": {
"name": "Anuj Ojha",
diff --git a/plugins/sipcode/skills/sipcode-limits/SKILL.md b/plugins/sipcode/skills/sipcode-limits/SKILL.md
index 21b6385..ff3a1b9 100644
--- a/plugins/sipcode/skills/sipcode-limits/SKILL.md
+++ b/plugins/sipcode/skills/sipcode-limits/SKILL.md
@@ -20,7 +20,7 @@ Answer from the limit readings Codex writes into its own logs on this computer,
| how close they are, when it resets, what used it | `sipcode limits` |
| whether a limit shrank, or the history | `sipcode limits --since all` |
-Run it once, without `--json`. This answer is mostly times (resets, run-out estimates), and Sipcode prints them in the user's local time zone, which it reads from this computer; the JSON has UTC timestamps and unrounded values that you would have to convert. Lines Sipcode prints on stderr that start with `note:` are part of the answer.
+Run it once, without `--json`. This answer is mostly times (resets, run-out estimates), and Sipcode prints them in the user's local time zone, which it reads from this computer; the JSON has UTC timestamps and unrounded values that you would have to convert. Lines Sipcode prints on stderr that start with `note:` are part of the answer. If Sipcode prints a line starting "warning:" that log files could not be read, say it first in your answer, as printed: the numbers leave those logs out.
## Present numbers
diff --git a/plugins/sipcode/skills/sipcode-regress/SKILL.md b/plugins/sipcode/skills/sipcode-regress/SKILL.md
index 6f62bb7..72ceba8 100644
--- a/plugins/sipcode/skills/sipcode-regress/SKILL.md
+++ b/plugins/sipcode/skills/sipcode-regress/SKILL.md
@@ -10,28 +10,33 @@ Answer "is it the tool or is it me?" from the user's own logs on this computer,
## Run Sipcode
1. Run the command for the question below straight away. Do not check the Sipcode version first: every extra command is another request that re-sends this whole chat. If the shell says `sipcode` is not found or not recognized, tell the user: "Sipcode is not installed. Run `npm i -g sipcode` once in a terminal, then ask again." and stop. If Sipcode says the command or an option is unknown, tell the user: "Your Sipcode is older than this plugin. Run `npm i -g sipcode@latest`, then ask again." and stop. Do not try `npx` (the sandbox usually blocks network access) and do not install anything yourself.
-2. Run this once:
+2. If the user asks about Codex or does not name a tool, run the Codex check once:
```bash
- sipcode regress --bug-report
+ sipcode regress --bug-report --agent codex
```
- It reads `~/.claude/projects` and `~/.codex` and compares each version with the user's other versions. If the user asked only about Codex, run `sipcode regress --bug-report --agent codex`; only about Claude Code, `sipcode regress --bug-report --agent claude-code`. Use no other options.
+ It reads only the Codex logs in `~/.codex` (usually about a second) and compares each Codex version with the user's other versions.
+
+ Run the Claude Code check only when the user explicitly asks about Claude Code: `sipcode regress --bug-report --agent claude-code`, or `sipcode regress --bug-report` (no `--agent`) when they ask about both tools. It reads `~/.claude/projects` (and `~/.codex` for both). Before running it, tell the user the first run can take a minute or more on large Claude Code logs. Give the command a timeout of at least 3 minutes. Use no other options.
+
+ A run cut off by a timeout prints nothing, and empty output is never a result: if the command returns no output at all, run it again with a longer timeout before answering.
3. If the sandbox blocks a log folder (the output says "Not found or not readable", prints a WARNING that files could not be read, or the command exits with code 2), request permission to run the same command again with read access to those folders, for example by running it outside the sandbox. Do not report a result from a blocked run.
4. Never open, read, search or summarise the log files yourself, and never paste their contents. Work only from Sipcode's output.
## Report the result
-1. Start with the coverage lines, quoted exactly as printed: requests, sessions, date range and versions, and which known-regression windows the logs cover.
+1. If Sipcode prints a line starting "warning:" that log files could not be read, say it first in your answer, quoted as printed: the result leaves those logs out, so it is partial.
+2. Then the coverage lines, quoted exactly as printed: requests, sessions, date range and versions, and (for Claude Code) which known-regression windows the logs cover.
- If the output says "Nothing to analyse", or the command exited with code 2, tell the user no logs could be read and that this is not a clean result. Never say "no regressions".
- If it prints a WARNING that files could not be read, say the result is partial and ask the user to allow read access, then run it again.
- If it says "Not enough data to compare versions yet", say that, and that it is not a clean result either.
- If it prints "Not enough data to compare Codex versions yet" or "Not enough data to compare Claude Code versions yet", that tool was read but not compared: say so, and do not include it in "no regressions".
-2. If there are findings, list each one with its versions, the evidence numbers and whether it matches a known, confirmed issue (R1 to R5). Quote numbers exactly as printed (they are already rounded for display); do not round or recompute them, and never invent one.
-3. A finding not in the known-issue catalog is a signal worth reporting, not proof of a bug. Say so plainly.
-4. A Codex finding ("Codex rate limit drains faster per token") could also be a limit change on the user's plan at the same time as the update, and Codex use on other devices or in the cloud shares the same limit: always say so, and call any limit change "possible".
-5. If there are no findings, say "No regressions detected in your logs" for the tools that were compared, and repeat the coverage, so the user knows what was checked. Do not speculate about causes.
-6. Offer the bug-report block (after "paste into a GitHub issue") for a GitHub issue. It holds token counts, versions, dates and short session ids only, never prompts or code. Tell the user to review it before posting.
+3. If there are findings, list each one with its versions, the evidence numbers and whether it matches a known, confirmed issue (R1 to R5). Quote numbers exactly as printed (they are already rounded for display); do not round or recompute them, and never invent one.
+4. A finding not in the known-issue catalog is a signal worth reporting, not proof of a bug. Say so plainly.
+5. A Codex finding ("Codex rate limit drains faster per token") could also be a limit change on the user's plan at the same time as the update, and Codex use on other devices or in the cloud shares the same limit: always say so, and call any limit change "possible".
+6. If there are no findings, say "No regressions detected in your logs" for the tools that were compared, and repeat the coverage, so the user knows what was checked. Do not speculate about causes.
+7. Offer the bug-report block (after "paste into a GitHub issue") for a GitHub issue. It holds token counts, versions, dates and short session ids only, never prompts or code. Tell the user to review it before posting.
## Rules
diff --git a/plugins/sipcode/skills/sipcode-spend/SKILL.md b/plugins/sipcode/skills/sipcode-spend/SKILL.md
index cd72928..e3496f8 100644
--- a/plugins/sipcode/skills/sipcode-spend/SKILL.md
+++ b/plugins/sipcode/skills/sipcode-spend/SKILL.md
@@ -21,7 +21,7 @@ Answer from the user's own Codex logs on this computer, through the published `s
| this month, month end, "what will this month cost" | `sipcode forecast --agent codex --json` |
| a period: last 7 days, since a date, all time | `sipcode stats --agent codex --since 7d --json` (use `7d`, `30d`, `90d`, `all` or a `yyyy-mm-dd` date) |
-Run it once. Lines Sipcode prints on stderr that start with `note:` are part of the answer.
+Run it once. Lines Sipcode prints on stderr that start with `note:` are part of the answer. If Sipcode prints a line starting "warning:" that log files could not be read, say it first in your answer, as printed: the numbers leave those logs out. With `--json` the same thing comes on stderr as a `note:` that log files or folders could not be read or parsed, or that compressed logs were skipped: say that first too.
## Present numbers
diff --git a/plugins/sipcode/skills/sipcode-why/SKILL.md b/plugins/sipcode/skills/sipcode-why/SKILL.md
index f7af53a..753566f 100644
--- a/plugins/sipcode/skills/sipcode-why/SKILL.md
+++ b/plugins/sipcode/skills/sipcode-why/SKILL.md
@@ -20,7 +20,7 @@ Answer from the user's own Codex logs on this computer, through the published `s
| the last (most recent) session | `sipcode why --agent codex --json` |
| a specific session | `sipcode why --agent codex --list` to find its id, then `sipcode why --agent codex --session