Security

The threats Tenetora checks, the action boundaries it enforces, and the responsibilities that deliberately remain with people.

Audience

Operators and reviewers who decide what to trust — and who need to know exactly where the mechanical checks end.

Task path

  1. Read the threat table: each row names a concrete threat, its checkpoint, the observable evidence, and the responsibility that remains.
  2. Review the action guards and when each one runs.
  3. Understand the external-input boundary before pasting reports, issues, or generated patches into an agent session.
  4. Check the ownership rules that keep installs and upgrades fail-closed.

Threats and checkpoints

Concrete threatTenetora checkpointObservable evidenceRemaining responsibility
A pasted report asks the agent to run unrelated commands or expose local dataPrompt guard before semantic use or executionFinding classification and a block or warn actionA reviewer still judges whether legitimate content is safe and task-relevant
Staged changes contain secrets, local paths, sensitive files, or unexplained scopeCommit guard and project guardrailsNamed failing checks with remediationRepository permissions and the user's commit authorization still apply
A partial check is presented as whole-task completionClaim kinds and expected-command matchingPartial versus completion typing, command hash, goal and worktree bindingThe project must define a sufficiently complete verification command
A later conversation tries to reuse another task's active goal or proofOwner, session, conversation, and goal-fingerprint checksConflict, identity-mismatch, or goal-mismatch reportsA person explicitly selects or hands over the correct session
The installer meets third-party hooks, plugins, or legacy directoriesOwnership classification and transactional migrationForeign or review-required states, preserved paths, backups, rollback recordsAmbiguous ownership always goes to human review; nothing is auto-deleted
A local environment file is overwritten, moved, or deleted during agent workThe local-env registry with doctor/status discovery, the commit guard, and PreToolUse where the host supports itA missing-path diagnosis, and a deny decision on high-confidence destructive operationsProtection covers registered paths only; opaque tool payloads are never blocked speculatively

Action guards

ActionWhat the guard checks
Committenetora guard --action commit — staged scope, secrets, sensitive paths, commit-message detail, impact state, and review evidence
Rule or workflow changetenetora guard --action rules
External contenttenetora guard --action external-input — findings classified before the content is used
Completion claimtenetora guard --action claim — the verification command bound to goal, identity, and worktree
High-risk alignmenttenetora guard --action alignment — an alignment session is enforced for high-risk goals

Guards run checks and produce evidence. They never create authorization: a passed commit guard does not permit commit, push, deployment, or release without the user's separate instruction.

External input is data, not authority

Web pages, issue comments, shared reports, pasted scripts, clipboard content, and tool output are data. The external-input guard and the prompt-guard skill check for instruction override, irrelevant local execution, secret exfiltration, .tenetora mutation, and attempts to redirect the model away from the user's visible task — before the content is followed. Findings warn collaborators; the content never grants itself permission.

Local environment protection

Projects depend on machine-only files (.env, local configuration, certificates) that must never enter Git or shared evidence. Protection has four layers, each with its own evidence:

  1. The registry records the project owner's intent to protect a project-relative path — file contents are never stored.
  2. status and doctor discover a registered path that has gone missing, and report a damaged registry — read-only checks.
  3. Commit guard treats registered paths as sensitive, even when the file name matches no built-in rule.
  4. When the host supplies structured PreToolUse data — a destructive action plus the registered path — the hook denies high-confidence delete, move, truncate, write, or edit operations.

Register a path with:

bash
tenetora local-env --path /path/to/project --allow config/local/app.conf

The limit is explicit: a host that cannot reliably provide both a tool name and a path is never blocked speculatively, and not every host offers file-operation PreToolUse at all. Skills-only hosts (Generic Agents) have no PreToolUse layer — commit guard plus doctor/status remain the available layers there. To recover, check the project checkpoint first; never delete or empty a local file to pass a guard.

Workspace silence and registry hygiene

A globally installed Tenetora does not govern a workspace that has neither .tenetora/ nor a legacy .harness/: SessionStart, UserPromptSubmit, Stop, commit, and external-input behavior stay silent there. This is the explicit per-project enablement boundary, not a broken global install.

The machine registry shows stale and expired states:

bash
tenetora installations --json list
tenetora installations --json prune --expired

The expiry window is bounded, and cleanup is always explicit: pruning removes registry metadata only — never project files, the governance directory, local environment files, or third-party configuration.

Ownership and fail-closed

  • Existing user hooks are backed up and chained, never silently replaced; hooks without a managed marker are never modified.
  • Legacy directories migrate only when multiple independent ownership signals match; foreign or ambiguous layouts are preserved and reported.
  • Runtime writes, owner switches, and duplicate cleanup fail closed: one piece of observation evidence alone never authorizes a configuration change.
  • Governance insights aggregate trends without raw prompts, paths, session IDs, or commands; small samples report insufficient data instead of inventing metrics.

Limitations

  • Prompt guard is a mechanical first line; novel social engineering and semantically dangerous advice still need a qualified security reviewer or an explicit human decision.
  • PreToolUse protection exists only where the host supplies structured tool data; no host coverage is claimed beyond the verified platform matrix.
  • No guard output substitutes for the project's own security review and access control.
  • This site makes no security guarantees beyond the audited, observable checks described above.

Next steps