Skip to content

v0.2.2

Choose a tag to compare

@yogthos yogthos released this 31 May 22:04
· 211 commits to main since this release

A focused hardening release: a misbehaving plugin can no longer take down the whole agent.

Plugin sandbox (dirge-l6bf)

Janet plugins ran in the full default environment, which exposes os/exit — a direct call to C exit() that terminated the entire dirge process, bypassing the (try …) that already wraps every plugin hook, command, and tool. A single buggy or hostile plugin could quit the app out from under you.

os/exit, os/proc-kill, and os/sigaction are now rebound in the shared plugin environment to raise a catchable Janet error instead of terminating or signalling the host. Plugin errors are caught and surfaced as a [plugin] … errored notification exactly like any other plugin failure — dirge stays up. The worker side was already crash-safe (graceful eval timeouts, bounded shutdown join), so this closes the last way a plugin could crash the tool.

Plugin process-exec (os/spawn/os/shell) is intentionally left intact — it's a legitimate capability, not a crash vector.

Install: cargo install dirge-agent (binary: dirge). Cross-platform binaries are attached below.