<hero nonce=ac586618 sha256=50482245…>sealed

A safer LLM coding harness.

The models are excellent. The harnesses are not — they leak context, over-trust tool output, and ship nothing you didn’t hack into a skills.mdyourself. Signet builds those things in: sealed delimiters, a security classifier, fail-closed posture gates, a prompt library, a repo map, and role/mode determinism. Free and open, Apache-2.0.

brew install vulnetix/tap/signetgithub
Signet is a safer LLM coding harness: sealed delimiters, a security classifier, fail-closed posture gates, a prompt library, a repo map, and role/mode determinism — free and open source, Apache-2.0.
</hero>
<sealed nonce=56207b00 sha256=9f59c686…>sealed

The sealed block, explained.

Every block of context carries a random nonce and a SHA-256 integrity hash of its enclosed content. On the way out, any block with a missing nonce, an unknown nonce, or a failing hash is stripped before it reaches transport.

The real claim, stated plainly: a model cannot widen its own advertised tool surface by writing a forged <tools> block. The markup is verified, not trusted.

This page is built out of the same device. Each section is framed as a harness block whose header hash is computed at build time from that section’s own sealed payload. Scroll one into view and its integrity badge runs a verify tick — nothing here is trusted on sight.

Every block of context carries a random nonce and a SHA-256 integrity hash of its enclosed content; anything unsealed is stripped at egress. The page you are reading is built out of the same device — each section header hashes its own sealed payload.
</sealed>
<beliefs nonce=a264c816 sha256=afa55bb9…>sealed

Beliefs.

Safety above all else — and easy to YOLO.

Press f3 and the guardrail switch throws to off: one gold chip, zero classifier calls. Off means not called-and-ignored, simply not called. Flipping back restores the full fail-closed surface everywhere — session, inline commands, file admission, background agents, the CLI.

Roles for determinism.

Modes are sticky. An explicit choice is never silently re-classified by the next turn, and -detect-mode tells you what the Role Manager would do without acting on it. A plan session stays a plan session.

Tools first class.

A fixed-argv native catalogue of ~25 read-only utilities — Cat, Head, Git, JQ, Find, Diff — each backed by a specific binary and a fixed argument shape, never a shell. Instead of a growing Bash(jq *) allowlist, the verbs themselves are tools.

Local first, open source, community access.

Apache-2.0, zero telemetry, zero logging. Two local providers ship in the box, and the Vulnetix scanners and AI Firewall are free for everyone — not just enterprises.

Four beliefs: safety above all else and easy to YOLO; roles for determinism with sticky modes; tools first class as a fixed-argv native catalogue; local first, open source, with Apache-2.0, zero telemetry, and two local providers.
</beliefs>
<labs nonce=6d2be0c9 sha256=0b21f91f…>sealed

Where the labs stopped.

Claude Code, Codex, Cursor, Gemini CLI. The big labs build excellent models and put them behind harnesses that leak, over-trust tool output, and ship nothing you did not hack into a skills.md yourself. The models are the good part — this page is not a verdict on them.

The table is scoped strictly to feature presence. Every row is a checkable fact, never a quality judgement. Signet’s column traces to a file in this repository; a — means there is no public, checkable source at time of writing.

Feature-presence comparison across Signet, Claude Code, Codex, Cursor and Gemini CLI.
featuresignetclaude codecodexcursorgemini clitrace
sealed delimiters (nonce + SHA-256, stripped at egress)internal/rolemanager · e2e
security classifier on every untrusted tool resultinternal/rolemanager
classifier on a separate/local modelinternal/rolemanager · local providers
posture gates with provenanceinternal/posture
plan mode with Bash absent, not restrictedinternal/tui/view.go · e2e
structured persisted plan documentsinternal/plans
goal loop stopped by a stall, not a counterinternal/agent/passloop.go
native fixed-argv tool catalogue (~25 utilities)internal/tools/catalog.go
harness-computed repo mapinternal/repoindex
prompt library as filesinternal/prompt
credential importinternal/credentials
terminal-escape sanitisinginternal/tools
CI-enforced docs.github/workflows/ci.yml · docs/
Where the labs stopped: a feature-presence comparison naming Claude Code, Codex, Cursor and Gemini CLI. Every row is a checkable fact, never a quality judgement — the models are the good part.
</labs>
<trust nonce=1e32ee20 sha256=1d01acf2…>sealed

Trust pipeline.

Every untrusted result goes through sanitize → classify → decide, fail closed.Bash, WebFetch, WebSearch, Read, and third-party repository text all classify, unconditionally. Shaped results whose shape the harness knows — Grep, Glob, Write, Edit — take a sanitize-only lane and skip the round trip.

Long documents are classified in bounded chunks with overlap, and the verdict is the strictest across all chunks — not the first, not the average.

A streaming agent turn with a collapsed Bash preview
1 / 1

streaming turn · collapsed Bash preview

Trust pipeline: every untrusted tool result is sanitized, classified, then decided; shaped results take a sanitize-only lane with no classifier round trip.
</trust>
<modes nonce=8b5ba125 sha256=acace66e…>sealed

Modes.

Plan mode advertises and enforces a fail-closed surface with Bash absent — not present-but-gated, absent. A model cannot call what is not advertised. A read-onlyBash returns only under an explicit permission allow rule.

The goal loop stops on a stall — no new evidence, no re-plan after an attempt — and reports the stall with the evidence gathered. It does not fire a counter that runs past the answer.

Modes are sticky: an explicit choice is never silently re-classified, and-detect-mode tells you what it would do.

The plan review pane with Approve, Refine and Cancel
1 / 1

plan review pane

Modes: plan mode advertises a fail-closed surface with Bash absent, not restricted; the goal loop is stopped by a stall detector, not a counter; explicit mode choices are sticky.
</modes>
<tools nonce=7bf725a7 sha256=dee76c04…>sealed

Tools.

A fixed-argv native catalogue of read-only utilities — Cat, Head,Git, JQ, Find, Diff and ~19 more. Each is backed by a specific binary and a fixed argument shape passed straight to exec.Command — never through a shell. Arbitrary command strings are rejected.

Cd is confined: the working directory moves inside the session root, and the root does not widen. Path traversal to ../../../etc is blocked, not warned about.

Tools first class: a fixed-argv native catalogue of read-only utilities, never a shell; Cd is confined so the working directory moves inside the session root and the root does not widen.
</tools>
<permissions nonce=74c7b13e sha256=927d0533…>sealed

Permissions & approvals.

The effective permission set is a union of policy, session, tool kind and role — with provenance kept per grant, so every effective grant remembers which source added it. An explicit deny still wins; merging never silently widens a surface.

The guardrails switch reaches every surface: agent session, inline !cmd,@file admission, background agents, the CLI. A gated path checks the levelbefore calling the classifier — never after.

The approval prompt showing a diff
1 / 2

approval prompt · diff-in-the-prompt

Permissions and approvals: the effective permission set is a union with provenance per grant, and the approval prompt shows the actual diff, not a bare path.
</permissions>
<agents nonce=c5376b1d sha256=ccef11ce…>sealed

Agents & fan-out.

The f8 roster splits a question into concurrent read-only probes — each branch sees only the surface it is allowed to touch, and the orchestrator merges the verdicts. A branch that cannot mutate cannot be talked into mutating.

The f8 subagent roster and runs panel
1 / 1

f8 roster · runs panel

Agents and fan-out: the f8 roster spawns concurrent read-only agents, each branch sees only the surface it is allowed to touch, and results merge.
</agents>
<sessions nonce=80e6c133 sha256=25d92152…>sealed

Sessions & compaction.

/compact runs against a validated contract, not a vibes-based summary. Sessions auto-name from the work they did, mid-turn steering lands on the running turn, and the exit card always carries the resume command back to the finished session.

The branded session-end card
1 / 2

exit card · resume command

Sessions and compaction: a validated /compact contract, session auto-naming, mid-turn steering, and an exit card that always carries the resume command.
</sessions>
<providers nonce=dc01b021 sha256=49913f34…>sealed

Providers & local inference.

Credentials resolve across five layers — command line, environment, config file, agent profile, built-in defaults — and every resolved value carries its provenance: who set it, where, and when.

Two local providers ship in the box. /local-model assesses a candidate against the classifier probe before you trust it with a session.

The model picker
1 / 2

/model picker

Providers and local inference: five-layer credential resolution with provenance, two local providers shipped in the box, and /local-model assessment.
</providers>
<vulnetix nonce=b1184335 sha256=570c3393…>sealed

Vulnetix integration.

The AI Firewall routes traffic when you opt in, and the status footer reports availability honestly — a quiet probe at startup, not a claim that survives an unreachable gateway./vulnetix review, firewall and status are built in.

The Vulnetix scanners and the AI Firewall are free for everyone, not just enterprises — the baseline platforms eventually copy is already public.

Vulnetix integration: the AI Firewall routes traffic with an honest availability chip, and /vulnetix review, firewall and status subcommands are free for everyone.
</vulnetix>
<qol nonce=4de9adda sha256=3a279280…>sealed

Quality of life.

The grid of things you used to hack into a skills.md yourself. Each one is a file or a passing test in this repository, not a paste-in afterthought.

The settings screen showing provenance per value
1 / 1

/settings · provenance per value

  • prompt library as files
  • harness-computed repo map
  • work-discipline prompt section
  • identity block
  • capability auth probes
  • diff in the approval prompt
  • todo panel that only trusts assistant text
  • validated /compact contract
  • session auto-naming
  • mid-turn steering
  • /settings with provenance
  • no alt bindings, ever
  • /help guarded by a test
  • caveman mode
Quality of life: the grid of things you used to hack into a skills.md — prompt library, repo map, work-discipline prompt section, identity block, capability auth probes, diff-in-the-approval-prompt, a todo panel that only trusts assistant text, a validated /compact contract, session auto-naming, mid-turn steering, /settings with provenance, no alt bindings ever, /help guarded by a test, caveman mode.
</qol>
<gaps nonce=d60bc4e8 sha256=4979bcca…>sealed

Honest gaps.

No MCP. No image attachments yet. Stated plainly, because it is the cheapest credibility on the page and consistent with the product’s posture: fail closed, and say what is not there.

When they land, they land the same way as everything else — behind the classifier, inside the posture gates, and documented in a file with a test.

Honest gaps: no MCP, no image attachments yet. Stated plainly — the cheapest credibility on the page and consistent with the posture.
</gaps>
<install nonce=6a96edcd sha256=f7f7ba82…>sealed

Install.

Six platforms — linux, darwin and windows, each amd64 and arm64. Every release is built by the same workflow that publishes the Homebrew formula and the Scoop manifest, and the installer verifies the binary against the release checksums before it writes anything.

  • Homebrew

    brew install vulnetix/tap/signet
  • Scoop

    scoop bucket add vulnetix https://github.com/Vulnetix/scoop-bucket && scoop install signet
  • install.sh (checksum-verified)

    curl -fsSL https://raw.githubusercontent.com/vulnetix/signet/main/install.sh | sh
  • go install

    go install github.com/vulnetix/signet/cmd/signet@latest
  • source

    git clone https://github.com/vulnetix/signet && cd signet && go build ./cmd/signet
Install: Homebrew, Scoop, a checksum-verified install.sh, go install, and source, across six platforms — linux and darwin and windows, each amd64 and arm64.