AbdoCode 4.0.68
AbdoCode 4.0.68
Long answers no longer look like a dropped connection. Each attempt's deadline now follows the output the request asks for, and that output cap is actually sent to the provider (as max_completion_tokens for reasoning models). A long reply used to be cut at a fixed 150 seconds, reported as a transport failure, and retried with the same context up to seven times.
A stray space no longer ends the task. A tool call preceded by spaces, direction marks or zero-width characters is recognised as a call. A reply that carries the call marker in a shape the parser does not recognise is asked about once, instead of being accepted as a finished answer with no work done.
Shell commands are kernel effects. run, in the foreground and in the background, is admitted by the kernel as an irreversible effect, recorded in its journal before the process starts, and settled when it exits. The kernel reports how much it can enforce on your machine, and the agent tells you once per turn. Background runs now go through the same controlled launcher as foreground ones, and their logs are written as UTF-8.
Guards that catch what people actually type. npm install -g …, npm i -g, pnpm add -g, bun add -g and yarn global add are refused as global installs. Before, only the trailing-flag form was caught.
Refusals that name their cause. On a Linux display with no window manager, the desktop channel says so instead of reporting that focus moved. A worker that exits without a message has its exit code explained. The installer gate finds the built package from the version in the desktop config instead of a stale hard-coded name.
An honest plugin inventory. Plugins whose reader only runs in a specific situation — an approval question, an MCP call, a secret prompt — are shown as waiting for that situation, not as never read.
Checked on a clean machine. Every push now runs the kernel gate, the product-composition and provenance gates, the repository-level tests and a full type check on a fresh Linux runner.