Capability matrix

August 23, 2026 ยท View on GitHub

Generated from capability-manifest.toml (manifest version 1). Do not edit this file by hand: change the manifest and run cargo test -p tirith capability_matrix_is_in_sync to regenerate it. The capability_matrix_is_in_sync CI test fails if the two drift.

Every command reports its coverage: whether tirith inspects the bytes or structure it acts on (Inspected), why, and whether the active policy can fully govern that surface (Policy-complete).

Inspected:

  • Full: tirith inspects the content/structure the command operates on.
  • Partial: tirith inspects some signals (metadata, name, shape) but not the whole artifact.
  • None: the command reports, gates, configures, or manages state; it does not inspect content directly.

Scan & analyze

CommandInspectedCoveragePolicy-complete
tirith checkFullTokenizes the command and inspects every extracted URL, path, and Docker ref through the full rule pipeline.Yes
tirith pasteFullScans the pasted bytes and rich-text HTML for injection, invisible characters, and homograph attacks.Yes
tirith scanFullWalks files, directories, and configs; inspects bytes, embedded URLs, and wheel/native artifact members.Yes
tirith runFullDownloads and inspects the script and interpreter shebang. Live execution is Linux-only and uses the exact reviewed bytes from a sealed anonymous descriptor; --no-exec remains inspection-only on Unix.Yes
tirith fixFullRe-analyzes the command being rewritten so the suggested safer form is itself checked.Yes
tirith viewFullNeutralizes terminal-deception escape sequences in the rendered bytes before they reach the terminal.Yes
tirith scoreFullDecomposes a URL into fixed, inspectable trust factors that sum to the final score.Yes
tirith diffFullByte-level inspection of where suspicious characters hide in a URL versus a known-good pattern.Yes
tirith fetchFullFetches and inspects server responses for cloaking; --save quarantines without executing and marks the file tainted (Unix).Yes
tirith previewPartialSimulates the filesystem blast radius of destructive commands; models the impact rather than inspecting content.Yes
tirith watchPartialRuns a command, then diffs filesystem, PATH, and shell-rc impact; observes effects, not the command bytes.Yes
tirith temp-runPartialRuns a command in a throwaway directory and diffs file impact. File isolation, not full containment, unless --capsule is set.Partial
tirith capsule runFullCopies the project with symlink-safe same-inode traversal (refusing symlinks, escapes, and case/Unicode collisions), digests every copied file, runs the exact argv in a fail-closed capsule, and diffs the tree afterwards. Enforceable only on x86_64 Linux; every other host refuses before any copy or spawn.Yes
tirith taintNoneTracks provenance of files downloaded from risky sources; flags execution of a tainted file. Bookkeeping, not content inspection.Yes
tirith intendFullInspects the command and flags high-impact behavior the stated intent does not justify (advisory).Yes
tirith task checkPartialPreview, diagnostic. Parses a bounded untrusted task envelope in full and assigns each source's effective provenance from the tirith-owned ingress adapter rather than the document's own claim, but effect inference models the Web3 shell grammar and nothing else, so a proposed shell action outside that grammar is reported INCOMPLETE rather than understood. Executes nothing, fetches nothing, resolves no package, and writes nothing; it declares enforceability observe_only, so it reports what an envelope would be allowed to do and stops nothing.Yes
tirith labFullRuns the detection engine against a curated, inert adversarial corpus to show what it catches. Offline.Yes
tirith explainNonePrints rule documentation, examples, remediation, and MITRE mapping. Documentation surface.Yes
tirith whyNoneExplains the last rule that triggered. Reporting surface over an existing verdict.Yes
tirith visual-auditNoneTests whether the terminal and font can distinguish confusable glyph pairs. Environment probe.Yes

Status & health

CommandInspectedCoveragePolicy-complete
tirith statusNoneReports protection mode, hook health, active policy, and threat-DB freshness. Reporting surface.Yes
tirith doctorNoneDiagnoses install, hooks, policy, and per-OS capsule coverage. Reports state and can --fix configuration.Yes
tirith prompt-statusNoneOne-line protection and active-context indicator for the shell prompt. Reporting surface (30s cache).Yes
tirith dashboardNoneRenders a local-only HTML dashboard from the audit log, policy, and trust store. Reporting surface.Yes
tirith warningsNoneShows accumulated session warnings. Reporting surface over prior verdicts.Yes
tirith receiptNoneTracks and verifies scripts run through tirith run against the audit hash-chain. Verification surface.Yes
tirith logsFullInspects agent and CLI logs for injection seeds, secrets, and escape bytes.Yes
tirith baselineNoneOpt-in per-user anomaly baseline (off by default). Learns observed activity; does not inspect content.Yes

Setup & onboarding

CommandInspectedCoveragePolicy-complete
tirith initNonePrints the shell hook for the active profile. Configuration surface.Yes
tirith onboardNoneGuided first-run wizard: detects the environment and recommends a policy template. Configuration surface.Yes
tirith setupNoneOne-command AI-tool setup. Writes integration config; does not inspect content.Yes
tirith installPartialRecords and risk-analyzes an install. npm/pip/cargo get content and registry signals; apt/brew/dnf/yum/pacman/scoop/docker/go are signal-weak (threat-DB name match plus install-command rules) and say so on every run. For npm, --online also reports registry identity facts (origin, registry-bound tarball URL, parsed dist.integrity SRI, legacy shasum status, signature and provenance-attestation state) and, on an unpinned spec, a name-existence probe; those facts are parsed, never verified, and tirith does not download, inspect, or bind the tarball bytes npm installs.Partial
tirith verify-selfFullVerifies the running binary and its build/install provenance against signed checksums.Yes
tirith updateFullSignature-verified self-update: inspects the downloaded binary before replacing the running one.Yes
tirith versionNonePrints version and, with --provenance, build/install provenance. Reporting surface.Yes
tirith browserPartialInstalls the Chrome native-messaging host that records clipboard provenance (configuration surface). browser audit additionally reads bytes: it hashes every file under a profile's Extensions// source tree, parses each manifest.json, and reads exactly three install-class fields (location, from_webstore, was_installed_by_default) from Preferences. It never reads cookies, history, saved passwords, Local Storage, IndexedDB, extension storage, wallet databases, or Local State, so it cannot see browsing data or the signed-in account, and profile identity is the profile directory name only.Yes
tirith devcontainerPartialGuards container operations and injects tirith into devcontainer.json. Inspects the guarded operation, not container contents.Yes
tirith codespacesNoneSets up and injects tirith into Codespaces. Configuration surface.Yes
tirith activateNoneActivates a commercial license key. Licensing surface.Yes
tirith licenseNoneShows and manages license status. Licensing surface.Yes

Policy, trust & rule authoring

CommandInspectedCoveragePolicy-complete
tirith policyNoneScaffolds, validates, dry-runs, tunes, and shows the resolved effective policy with neutralized repo fields. Policy surface.Yes
tirith trustNoneManages trusted patterns (narrow scope, 30-day TTL by default). Policy surface.Yes
tirith ruleFullAuthors and tests custom detection rules (regex or the when: semantic DSL) against sample input.Yes
tirith output wrapFullInstalls or removes the tirith-out wrapper that runs a command's output through tirith view.Yes

Shell & system guards

CommandInspectedCoveragePolicy-complete
tirith daemonNoneBackground daemon for faster checks and network enrichment (Unix). Process management; inspection happens in check/scan.Yes
tirith hooksFullInventories and classifies git / husky / lefthook / pre-commit hooks by inspecting their scripts.Yes
tirith execFullReports a binary's package owner, signature, permissions, and whether it shadows a system command.Yes
tirith envPartialMonitors sensitive env-var lifecycle. Inspects variable names and shape; values are never stored.Yes
tirith pathFullFlags PATH-hijack risk by inspecting each PATH entry (repo-local, /tmp, or writable-before-system directories).Yes
tirith sudoPartialSudo-escalation gates with a reasoned session window. Inspects the escalated command, not the target process.Yes
tirith sshPartialLabels SSH hosts; destructive commands on a labeled-prod host escalate. Inspects the command against the host label.Yes
tirith contextPartialLabels and guards active cloud / k8s contexts; prod-destructive operations escalate. Inspects the operation against the context label.Yes
tirith persistenceFullInventories and diffs persistence footholds (rc files, authorized_keys, crontab, LaunchAgents) by inspecting them.Yes
tirith hygieneFullInspects ~/.ssh, ~/.aws, ~/.kube, .npmrc, and more for loose permissions or plaintext tokens (fix is chmod-only).Yes
tirith aliasesFullInspects shell aliases that shadow critical commands, call the network, or read credentials.Yes

Supply-chain

CommandInspectedCoveragePolicy-complete
tirith packagePartialScores a package's supply-chain risk (offline by default; --online adds registry provenance; --installed walks installed trees). Inspects locally-available content when present, name and metadata otherwise. For npm, --online reports dist identity facts and their verification state; no state can be verified here, and tirith does not download, inspect, or bind npm tarball bytes.Partial
tirith ecosystemPartialScores every declared dependency in a project, slopsquat-aware. Inspects manifests and installed trees; registry depth needs --online.Partial
tirith threat-dbNoneManages the signed local threat database. Data management surface consumed by the inspecting commands.Yes
tirith iacFullTerraform / Pulumi / OpenTofu apply gates: inspects the saved-plan hash and blocks no-plan applies.Yes
tirith canaryNonePlants synthetic honeytokens; a touch fires canary_token_touched. Detection by tripwire, not content inspection.Yes
tirith secretNoneGuidance-only secret-rotation assistant for 11 providers (no network). Advisory surface.Yes
tirith command-cardFullCreates and verifies Ed25519-signed attestations that a known-good command is what it claims.Yes
tirith commandsFullRepo command manifest: a bounded allowlist plus an elevation-only dangerous[] list, inspected against the invoked command.Yes
tirith attest buildFullHashes every regular file of a source tree and an output tree into one deterministic digest each, plus the commit and dirty state, lockfile digests, policy projection hash, a REDACTED argv digest, and the per-file output manifest. Every symlink, non-regular entry, non-UTF-8 path, case or Unicode collision, and mid-hash change is a REFUSAL, never a silently skipped entry. This is a point-in-time record, not a reproducible-build claim: tirith does not run the build, does not observe the compiler, and cannot say the output came from the source.Yes
tirith attest verify-buildFullChecks the receipt's signature against this installation's audit key, then re-scans and re-hashes both trees under the caps, exclusion set, and permission model the receipt itself records. It proves the trees are unchanged since the receipt was taken; it proves nothing about where either tree came from.Yes
tirith attest deploymentFullVerifies the build receipt first (a receipt that fails its own integrity rules makes ZERO requests), then fetches only the routes the build's output manifest names, from ONE https origin through the connect-time DNS guard, and hashes the exact returned bytes. A cross-origin redirect is a mismatch, not a follow. It proves only that those routes returned those bytes at that timestamp: not continuous monitoring, and nothing at all about routes it did not fetch.Yes
tirith attest verify-deploymentNoneRe-checks the deployment receipt DOCUMENT: its content address, its signature, and its internal consistency. It makes no network request and re-measures no route, deliberately, because a second measurement presented as verification of the first would be the continuous-monitoring claim these receipts refuse to make.Yes

AI-agent integrations

CommandInspectedCoveragePolicy-complete
tirith mcp-serverFullRuns tirith as an MCP server (six cross-platform tools, plus tirith_fetch_cloaking on Unix) over JSON-RPC stdio; inspects tool inputs and sanitizes tool/resource-read outputs by default.Yes
tirith mcpFullInventories and gates a repo's MCP servers into .tirith/mcp.lock; inspects tool descriptors, schemas, and per-capability surfaces.Yes
tirith gatewayFullMCP gateway proxy that intercepts AI-agent tool calls; inspects requests and filters responses for injection and exfil.Yes
tirith agentPartialCaller-origin governance (human / agent / MCP / CI / IDE); an agent_rules.deny match forces a block. Inspects origin and rules, not payloads.Yes
tirith aiFullAI-config workflow: scans, snapshots, and quarantines config files, detecting drift or poisoning by inspecting them.Yes
tirith lspFullLanguage server that surfaces tirith diagnostics inline in an editor; inspects buffer contents through the engine.Yes

Forensics & response

CommandInspectedCoveragePolicy-complete
tirith auditNoneAudit-log management; verify checks the tamper-evident hash chain. Verification and export surface.Yes
tirith incidentNoneDeclares an under-attack posture: fail-closed, bypass disabled, key rules elevated. Posture control.Yes
tirith checkpointFullSnapshots files before risky operations; restore sha256-verifies each blob and reports per-file outcomes.Yes
tirith pendingNonePending-decision registry for deferred blocks and suppressed-finding rollups. Bookkeeping surface.Yes
tirith shareFullAudience-aware redaction before sharing; inspects the payload and strips secrets per target audience.Yes
tirith redactFullAudience-aware redaction of arbitrary text; inspects and removes secret-shaped content per audience.Yes
tirith clipboardFullClipboard with secret-shape gating and browser source attribution; inspects copied content before it leaves.Yes

Package firewall

CommandInspectedCoveragePolicy-complete
tirith pkg installFullResolves with hashes, quarantines the exact wheel bytes, and inspects them. Enforcing Python installation is x86_64 Linux-only and uses only the verified bytes inside a containment capsule with a tamper-evident receipt; every other platform or architecture fails closed before pip starts.Yes
tirith pkg verify-envFullVerifies an installed environment's files against their RECORD and the threat DB. Python-only.Yes
tirith pkg approveFullBinds an approval to an InstallPlanDigest over the inspected artifact hashes, packages, target env, policy projection, and DB sequence.Yes
tirith pkg graphFullRenders the execution/ownership provenance graph from inspected artifact execution edges and the ownership map.Yes
tirith pkg diffFullLocal release differential between two wheels; inspects members for execution-shape drift (pure to native, hooks added).Yes
tirith pkg attestFullBinds a PyPI provenance attestation subject digest to the quarantined sha256 and verifies it (optional sigstore feature). Missing or invalid attestation is evidence, never an auto-allow.Yes
tirith pkg attest-npmPartialResolves npm through the trusted-executable mechanism, discovers its exact version, and runs one argv from a CLOSED fixture-backed contract table; an npm outside the table runs NO command. It reads the project's package-lock.json and node_modules inventory in full and binds npm's own answer to them, and it compares an attestation's in-toto subject digest against the lockfile integrity SRI. The signature verification is npm's, not tirith's: npm signs with ECDSA P-256 and this workspace has no P-256 backend, and the Sigstore closure is off on the workspace MSRV. Tirith does not download, inspect, or bind the tarball bytes npm installs. A non-public registry, an unsupported npm, Windows, or a project .npmrc that reconfigures the audit all return partial.Yes
tirith pkg receiptNoneLists and shows tamper-evident artifact-scan receipts. Reporting surface over recorded receipts.Yes