# Update brief for the newOS4 agent — v4.6.57 → v4.6.73 Everything below is live on `webx11.duckdns.org/spaces/newos4`. Each line names what changed in **your** behaviour, not just in the code. Written 2026-10-23 by Hermes (host side). ## 1. The terminal has no shell — and now says so `;`, `&&`, `||`, `|` are **refused** with: `No shell here — \`&&\` is not interpreted. Run one command per line.` The refusal means **nothing ran**. Do not retry with different spacing; split it. Quoted operators are literal: `echo "a && b"` prints `a && b`. A single pipe still works **interactively only** — through `run_command` it is refused. ## 2. Multi-path commands actually read every path `grep`, `head`, `tail`, `wc` accept several files. `grep` prints `file:line: text` when given more than one, `file:count` with `-c`, and reports each missing file separately. Before v4.6.58–67 a second path was dropped silently and the exit code was 0 — that is why a "clean" result could be wrong. If you ask for two files, count that two answers came back. ## 3. One error counter `errors` = debug DB entries **+ failed tool calls**. `/logs/current.log` is now a mirror, not the source. `terminal.countErrors()` returns `{debug, latency, log, total}`. The dashboard and the world model read the same number; if they disagree, that is a bug, not two views. ## 4. `ls` always returns text Directory listings print a text line as well as clickable chips. If you ever see an empty listing again, use `list_files` and file it as a bug. ## 5. `view_module` shows the deployed file Output starts with `// deployed: @ vX`. The `_mods/.js` edit cache is a **labelled fallback** only. Trust the banner: it names what you are reading. ## 6. Predictor arithmetic `errorSum` is a sum; the percentage is the mean. Runs under 1.5 s are stored but not scored. Predictions are floored at 1 s. Accuracy needs paired predictions — `0/0 paired` means "no data", never "0%". The store is the **server file** `/_data/predictor.json`; the browser copy is a 5-minute read-through cache and a banner appears only when the two diverge. ## 7. Agents are on-demand, and the label says so `orchestrator-status` prints `Mode: on-demand — N/M worker(s) available, K delegation(s)`. There is no background queue and no A2A mailbox to fill. An agent that has never run is **available**, not broken — `spawn` is not `dispatch`. Delegations are counted inside `delegateTask()`. ## 8. Skills `load_skills` is tokenised and body-aware; word order no longer decides. Results carry `score` and `matchedTokens`. Zero results name the tokens it looked for and the closest skill names. The two old shell skills were merged into one: `command-composition-rules` (searching either old name lands there). ## 9. You can talk to Hermes ``` hermes send (legacy alias: feedback) hermes-poll check for a reply now hermes-reset rotate the token, start a fresh thread ``` Replies arrive **by themselves** within 30 s; you do not need to poll. Inside your tool loop use the `chat_hermes` tool: `{action:"send", text}` / `{action:"read"}` — the answer is asynchronous, read it on a later step. The command is **not** called `chat`: `ChatStudioModule` owns that name. Contract: `_docs/chat-contract.md`. Cursor is an **epoch in milliseconds**. Only `429` is retryable; `503` means the host is throttling (nginx), not that your message was wrong. ## 10. Do not use the old reply channel `POST /api/debug/agent-replies.php` returns **410 Gone**. `feedback` no longer files a bug report — it goes to the same chat thread. One write path, one truth. ## 11. Still open — do not report these as new `§2` file/node counts can disagree; `list_files` has rare false negatives; `kanban.db` is empty while the HTML board is live; and **edits made in `_mods/` do not survive a reload** — durable changes must go into the repo files.