Innovate, disrupt, code the future. 💻🔐🚀

A BrowseSafe++ false covers the prefix, not the page

A 6,011-character page came back as one field. The stand-in prediction was {"injected": False}. The marker that started at character 6,001 was not in the text the decision model scored. A failed call with the failure policy set to closed produced the same object, while a different counter moved. If you store only that object, you cannot tell a short clean page from a long page whose tail was never read, and you cannot tell an act-band hit from a decision that never returned a probability.

2026-11-14

Hermes plugin search misses the live catalog and stays silent

hermes plugins search --json 0xarchive exited 0. Stderr was empty. The JSON object had query set to 0xarchive and results set to an empty array. The published catalog, generated at 2026-11-14T03:45:01.238695+00:00, contains that name at version 1.0.0, pinned to 65575eddfa9c33ec429626542455eecd423cf6a5. The decoded file that holds the name is 4,443,848 bytes. The loader in this binary refuses a live body larger than 2,097,152 bytes, logs the refusal at debug, and does not write a cache. Search then answers from the catalog shipped in the checkout.

2026-11-13

Grok inspect points a project MCP server at the user config

grok mcp list printed the project server as enabled. grok inspect --json named the same server and set source.path to the user config. That file did not contain the server. grok mcp doctor refused to start it, and the hint said to re-run with --trust. That flag is not in grok --help, and putting it after doctor is an error.

The file a script will open is the file inspect names. On this binary that file is the wrong one for a project server, before the folder is trusted and after the grant is written.

2026-11-13

An engines range does not unload a Claude Code 2.1.308 plugin

Claude Code 2.1.323, in the changelog dated 12 November 2026, adds engines["claude-code"] to plugin.json and says a plugin outside that range is not installed, updated, or loaded. The binary in this lab is 2.1.308. On that binary the same key is a warning, the warning says the field is ignored, and a plugin whose range sits below 2.0.0 still seats its skill.

That is a version boundary, not a disagreement inside one release. Copying the new field onto a fleet that has not upgraded does not do the job the changelog describes. The validator on 2.1.308 will tell you it is safe to keep the field. That sentence matches what this binary did. It is not a description of 2.1.323, and it is not a reason to skip the list after you upgrade.

2026-11-12

A failed kanban completion still binds the pull request

The card was still blocked. hermes kanban show --json listed completion_contract as https://github.com/acme/repo/pull/7. Create, a few seconds earlier, had stored acme/repo. Complete had exited 1. Stderr was one sentence: cannot complete t_ab9031f6 (unknown id or terminal state). The id was the one create had printed. The status was not terminal. No gh process had been started for that card.

The kanban page already says which login must read a pull request. It does not say that a failed read rewrites the stored contract, or that complete reports the refusal as a missing id. Those two results are what this binary recorded.

2026-11-12

Read a Codex feature stage before you copy its boolean

Codex CLI 0.163.0 will print every feature it knows as a key, a stage, and a boolean. The config page tells you to turn a feature off by setting that key to false. The page is describing the file. The process reads a resolved set. On an empty home, eight rows whose stage is removed already have the boolean true. Writing false moved two removed keys this run measured and left three others at true. codex features disable exited 0 for one of the keys that did not move, wrote the file, and printed a success line. The next list still said true.

2026-11-11

Pin the smoke test hermes verify runs

A checkout that grows a second toolchain still has one smoke test. On this Hermes binary, hermes verify picks that test from the files at the project root, then runs the strings it picked. The pick is not the language you think the project is. It is a kind, taken from the first matching manifest, plus a test list that can also name commands from files the kind ignored.

This run measured that split on disposable directories, then pinned one test command in .hermes/environment.json and ran it. The pinned command is what the phase line named. The extra commands from the other files were not on that list.

2026-11-11

A marker file at the top of a Claude plugin folder hides the plugins under it

The same --plugin-dir flag, pointed at the same directory, produced two inventories. In the first, claude plugin list named alpha@inline at version 0.1.0 and beta@inline at version 0.1.0. Both rows said loaded. In the second, the same command named one row, plugins@inline, version unknown, and said that row was loaded too. Both commands exited 0. The child directories had not moved. Each still held a .claude-plugin/plugin.json and a skill file. The change between the two lists was a file at the top of the parent.

2026-11-10

Grok worktree show stays alive after the creator exits

grok worktree show printed Status: alive. The creator PID on that line was not a running process. grok sessions list exited 0 and printed No sessions found. The session id began with pager-. A search of the grok home found that id in the worktree registry and nowhere else.

That is the line that will mislead a wrapper. grok worktree create exited 0, wrote one path to stdout, and wrote nothing to stderr. The sessions page this binary installed on first launch says create does not start a session, and that the path is the only stdout, so a command substitution can change to that directory. Both of those sentences held. The registry row did not. Show still reported a session id, a creator PID, and a status of alive after the create process was gone.

2026-11-10

Hermes resume reports clear while a directory sentinel remains

hermes resume exited 0. The sentence was Hermes is not paused, and it named the sentinel path. The next hermes status still printed the pause banner, with no reason on it. The path in the resume sentence was a directory. The directory was still there after the command returned.

That is the line that will mislead a wrapper. On this install, a directory named ESTOP holds the stop. Resume reports that the stop is gone because it cannot unlink a directory. Status keeps reading the directory as engaged. A script that treats the resume sentence as the state of the pause will start work that the scheduler is still skipping.

2026-11-09