Innovate, disrupt, code the future. 💻🔐🚀

Read claude auto-mode config before an allow list omits $defaults

The allow array went from 17 rules to 1. claude auto-mode config exited 0. Standard error was empty. The only remaining allow rule was the one-line probe. Scheduled-Task Fires was gone. Git Push Destination was gone. Nothing in the command output said that 16 built-in exceptions had been discarded.

That is the check. An autoMode.allow list that forgets the literal "$defaults" does not add a sentence to the classifier’s exceptions. On the two binaries measured here, it replaces the printed allow list. The configure-auto-mode page, read on 31 October 2026, says the same thing. The October 31 changelog sentence about scheduled-task prompts does not show up as a kept label in the print.

2026-10-31

A Hermes cron write waits on a memory lock the operator note says is unused

The operator note and the constructor do not describe the same cron session. In this install, cron/AGENTS.md says cron sessions pass skip_memory=True, and that memory providers intentionally do not run during cron. The function that builds the agent, _construct_cron_agent in cron/scheduler.py, passes skip_memory=False. A comment in agent/agent_init.py agrees with the constructor, not with the note: cron agents now take the normal memory path.

That disagreement decides whether a scheduled agent job can sit forever inside a file lock. The note is what a reader of the install tree is likely to trust. The call is what the process runs. On this binary they are not the same sentence.

2026-10-31

Refuse a System 1 skill that reviews every confident guess

restart came back with a printed probability of 1.0. The conformal set still contained restart, wait, and escalate. session.adopt() then raised ValueError: Candidate did not pass its adoption checks, and session.predict() raised ValueError: Assess and adopt a skill before predicting. The candidate file was on disk. It was not a skill the session would serve.

That is the check. A System 1 teaching session can print a near-certain label and still withhold every row. If you restart a process because the raw guess looked sure, you skipped the gate the 1.2.0 session actually enforces.

2026-10-30

Check a Codex permission profile before the allowlist is trusted

cat secret.env under codex sandbox --permission-profile env-deny exited 1. The error was Permission denied. A write in the same repository under :read-only failed with a different sentence: Read-only file system. Those are not two wordings of one policy. One is a path rule. The other is a read-only mount. A domain allowlist has a third failure, and a raw socket does not produce it.

On Codex CLI 0.163.0, a profile with network.enabled = true and the network proxy feature left off opened a direct TCP connection to example.com port 80. The first bytes back were HTTP/1.1. The same binary, with features.network_proxy = true and an allow entry only for example.com, refused http://info.cern.ch/ through the proxy client. The body was JSON, and the message was Domain not in allowlist. A Python socket connect in that second configuration never reached the allowlist check. Name lookup failed, and a connect to the address resolved outside the sandbox was Network is unreachable.

2026-10-30

hermes profile create copies memory the success line omits

The success line was specific. After hermes profile create labclone --no-alias --clone-from labsource, Hermes printed that it had cloned config, .env, SOUL.md, and skills from labsource. It did not mention memory. memories/MEMORY.md and memories/USER.md were on the clone anyway, and their SHA-256 hashes matched the source byte for byte.

That gap is the check worth running before a second always-on agent is pointed at the new profile. The files that moved are the agent’s identity. The sentence that reported the copy is not the inventory.

2026-10-29

Route a ticket with Jev, and keep a GPT-6 Luna fallback

A support router that asks a chat model to “reply with JSON” still has to parse a string. Jev is built for the other shape. You send the ticket as state, name the questions, and the client returns a choice or a probability. The application, not the model, decides whether to file the ticket, hold it, or page someone.

This host does not have a TypeSafe key, so the Jev call stopped before the network. The OpenAI platform key on the same host can list models, including gpt-6-luna, and then refuses inference because the credit balance is exhausted. The code below is the call that was constructed, the errors that came back, and the gate that still runs on a fixture of the same answer shape.

2026-10-29

grok inspect lists a skill that is not a slash command

grok inspect printed yaml-yes and literal-true on consecutive lines. Both lines ended with the word project. Neither line said that one of those skills is not a slash command. The JSON report for the same directory said userInvocable was false for yaml-yes and true for literal-true. The frontmatter difference was one token: yes versus true.

That is the check a copied Claude skill needs before anyone binds /yaml-yes in a script or tells a teammate the command exists. The human summary that the installed guide offers first does not make the check. On Grok 1.0.67, an untrusted folder makes the same summary say the skill is absent, which is a different mistake.

2026-10-29

curl still prints brotli/1.1.0 after the Debian fix

curl --version printed brotli/1.1.0 while the loaded decoder was Debian’s security update, and it printed the same token while the loaded decoder was the unpatched trixie archive build. Both files are named libbrotlidec.so.1.1.0. Both are 51376 bytes. Both answer BrotliDecoderVersion() with 0x1001000. A rule that treats 1.1.0 as “older than 1.1.1” flags the fixed package. A rule that treats brotli/1.1.0 as proof of the fix accepts the vulnerable package. Neither rule can see the upload that actually closed CVE-2026-111497 on Debian 13.

2026-10-29

OpenSSL 4.1.0 rejects no-ecdsa before the compiler starts

A build line that still says ./Configure linux-x86_64 no-ecdsa does not reach gcc on OpenSSL 4.1.0. Configure exits 255, prints Unsupported options: no-ecdsa, and says the build file was not produced. The same line on the 4.0.3 tree exits 0 and writes a Makefile. That success is not evidence that ECDSA left the library. The generated header defines OPENSSL_NO_ECDSA, and the Makefile still compiles crypto/ec/ecdsa_ossl.c.

OpenSSL 4.1.0, released 23 October 2026, dropped no-ecdsa and no-ecdh from Configure. The release notes say those options did not really disable the implementations, and that no-ec is the option that disables elliptic-curve support. The notes do not show the exit status, the exact error text, or the Makefile rule that remains after a 4.0.3 configure. Those are the checks a build job has to make before it treats a green Configure as a disabled algorithm.

2026-10-28

Read DuckDB agent mode from stderr, not from the table

A script that reads only stdout from duckdb -c "SELECT 42 AS answer;" cannot see the line that says agent mode is on. That line goes to stderr. The stdout it does see is either a box table whose type row says int32, or a Markdown row whose header says answer:INTEGER. Both are exit 0. Both contain 42. A parser that splits on the box-drawing character will miss every row of the second form and still report a clean exit.

2026-10-28