Ruleset queldrex:baseline 2026.07.2

The rules we decide under

Every rule Queldrex can decide against your agents under. Each one has a permanent citation, the text of what is required, the reasoning behind it, the ruleset version it came into force under, and whether you can contest a finding made under it. A rule you cannot read is one you cannot comply with, so all of them are here.

5
Denied outright
7
A person decides
8
Recorded only
Rules are not retroactive.Every receipt records the ruleset version in force at the moment of the decision. A stricter rule shipped tomorrow does not make yesterday's receipt wrong, and a repealed rule keeps its number forever so old receipts stay readable. Framework references are alignment, not compliance: there is no compliance regime for these frameworks and claiming one would be false.
QX-L-0001ProhibitionNot contestable at decision timesince 2026.07.1

Invocation of a decoy tool

An agent must not invoke a Queldrex canary tool. Canaries are decoys that no legitimate workflow has any reason to call.

Why this rule exists

A canary call is not a probability, it is evidence. Nothing legitimate discovers and invokes a decoy, so this is treated as a confirmed compromise rather than a risk score. It is denied before every other check precisely because it needs no interpretation.

Effect: denyRule key: canary.tripwireDenied outright.
Aligned withOWASP-ASI ASI10, Rogue Agents
QX-L-0002Prohibitionsince 2026.07.1

Tool failed safety verification

A tool whose definition scores at or above the failure threshold must not be invoked.

Why this rule exists

An agent reads a tool description before it ever calls the tool, so a poisoned description has already influenced the model by the time execution would begin. Verification has to bind before the call, not after.

Effect: denyRule key: tool.failed_verificationDenied outright.
Aligned withOWASP-MCP MCP03, Tool PoisoningOWASP-ASI ASI02, Tool Misuse and Exploitation
QX-L-0003Approvalsince 2026.07.1

Unresolved risk requires a human

A tool carrying unresolved risk signals below the failure threshold requires human approval before invocation.

Why this rule exists

Uncertainty is not safety. Where the evidence is genuinely ambiguous the correct actor is a person, not a threshold. Defaulting ambiguity to allow would make every borderline case a silent yes.

Effect: require_approvalRule key: tool.unresolved_riskA person decides.
QX-L-0004Prohibitionsince 2026.07.1

Malicious call argument

A tool call whose arguments contain an unambiguous attack signature must be denied, regardless of whether the tool itself is legitimate.

Why this rule exists

The common real attack is a clean tool driven with a hostile value: a cloud metadata address, a credential file path, a shell injection. Verifying only the tool definition misses this entirely, because the definition is honest and the argument is not.

Effect: denyRule key: call_args.maliciousDenied outright.
Aligned withOWASP-ASI ASI05, Unexpected Code Execution
QX-L-0005Approvalsince 2026.07.1, amended 2026.07.2

Suspicious call argument

A tool call whose arguments carry risk signals short of an unambiguous attack requires human approval.

Why this rule exists

Several argument patterns have real legitimate uses. Loading your own model with remote code enabled is ordinary work; loading someone else's that way is not, and the difference is context we do not have. A person does.

Effect: require_approvalRule key: call_args.suspiciousA person decides.
Aligned withOWASP-ASI ASI04, Agentic Supply Chain
QX-L-0006Approvalsince 2026.07.1

Untrusted input, sensitive data, and egress in one session

A session that has ingested untrusted input, accessed sensitive data, and can send data outward requires human approval before the egress step.

Why this rule exists

Each capability alone is ordinary. Together in one session they are the complete shape of an exfiltration, and by the time the third is exercised the first two have already happened. The judgment must be made on what the session actually did, not on what the caller says it did.

Effect: require_approvalRule key: rule_of_two.lethal_trifectaA person decides.
Aligned withOWASP-ASI ASI06, Memory and Context Poisoning
QX-L-0007Approvalsince 2026.07.1

Tool changed after approval

A tool whose content hash differs from the version previously approved for this account requires re-review.

Why this rule exists

Approval attaches to a specific version, not to a name. A tool that passes review and then changes has not been reviewed. Pinning at call time catches this when it matters rather than at the next scheduled scan.

Effect: require_approvalRule key: rug_pull.driftA person decides.
Aligned withOWASP-ASI ASI04, Agentic Supply Chain
QX-L-0008Approvalsince 2026.07.1

Abnormal call rate within a session

A session exceeding the declared call-rate ceiling requires human approval to continue.

Why this rule exists

A runaway loop and a compromised agent look the same from outside, and both are worth pausing. This is deliberately a floor for noisy failure, not a defence against distributed activity: an attacker who shards work across sessions stays under any per-session rate.

Effect: require_approvalRule key: behavior.velocity_anomalyA person decides.
QX-L-0009Prohibitionsince 2026.07.1

Account stopped

While an account is stopped, by a person or by the circuit breaker, all governed calls are denied.

Why this rule exists

A stop that can be overridden by ordinary traffic is not a stop. This overrides every other rule including monitor mode, because the entire purpose of a kill switch is that it is unconditional.

Effect: denyRule key: killswitch.activeDenied outright.
QX-L-0010Advisorysince 2026.07.1

Customer policy

An account's own policy may tighten any decision. It may never loosen one.

Why this rule exists

Customers know their environment and should be able to be stricter than the baseline. Allowing them to be looser would let a compromised console disable the protection, so the direction is one-way by construction.

Effect: recordRule key: policy.passRecorded. Never blocks.
QX-L-0011Prohibitionsince 2026.07.1

Human labelled this version malicious

A tool version a human on this account has confirmed malicious is denied on sight.

Why this rule exists

A human judgment on a specific version outranks any automated score. Re-litigating a decided case wastes the reviewer and risks reversing them silently.

Effect: denyRule key: feedback.owner_blockedDenied outright.
QX-L-0012Advisorysince 2026.07.1

Human cleared this version

A tool version a human on this account has confirmed benign clears a soft approval for that exact version.

Why this rule exists

The counterpart to the law above, and the reason both exist: a review process that can only ever convict is not a review process. Clearance binds to the exact version, so a later change re-opens the question.

Effect: allowRule key: feedback.owner_allowedRecorded. Never blocks.
QX-L-0013AdvisoryNot contestable at decision timesince 2026.07.1

Monitor mode

While an account is in monitor mode, decisions are recorded with what would have been enforced, and nothing is blocked.

Why this rule exists

Adoption fails if the first day of enforcement breaks production. Monitor mode lets an account see the judgments before they bind. The shadow decision is recorded so the record never claims a block that did not occur.

Effect: recordRule key: monitor.shadowedRecorded. Never blocks.
QX-L-0014AdvisoryNot contestable at decision timesince 2026.07.2

New principal reaching for capability

A principal first seen minutes ago, appearing alongside existing principals on the account and immediately using sensitive or outbound tools, is recorded for review.

Why this rule exists

Credential rotation is the standard evasion against any identity-scoped memory, so instrumenting the churn turns the evasion into the signal. It records and never blocks, because ordinary fan-out workloads produce the same shape and enforcing here would fail across a customer's whole fleet at once.

Effect: recordRule key: observation.actor_churnRecorded. Never blocks.
Aligned withOWASP-ASI ASI03, Agent Identity and Privilege Abuse
QX-L-0015AdvisoryNot contestable at decision timesince 2026.07.2

Correlated activity across sessions

Activity joined across a principal's sessions that persists across days, or that includes an already-blocked call, is surfaced for review.

Why this rule exists

Enforcement holds one hour of state so it stays cheap. Campaigns outlast an hour. The long look happens offline over durable records and produces an investigation surface, never a verdict.

Effect: recordRule key: observation.retro_huntRecorded. Never blocks.
QX-L-0016AdvisoryNot contestable at decision timesince 2026.07.2

Server changed what it declares itself to be

A server presenting a self-description that differs from the one previously recorded for that endpoint is reported, with the specific difference named.

Why this rule exists

MCP 2026-07-28 removes the initialize handshake, removes sessions, and states that a server's self-reported identity is unverified and must not drive security decisions. No client-side anchor remains for noticing that a server changed. Statelessness constrains servers, not an observer in the path, so we keep the memory the protocol discards. Reported and never blocked, because the ordinary cause is that somebody deployed.

Effect: recordRule key: continuity.server_face_changedRecorded. Never blocks.
Aligned withOWASP-ASI ASI04, Agentic Supply Chain
QX-L-0017Approvalsince 2026.07.1

A named path from untrusted input to an egress tool

Where the specific untrusted origin and the specific sensitive source that can reach an egress tool are both known, the finding names them, and the call requires human approval.

Why this rule exists

This is QX-L-0006 with the evidence attached. The same three capabilities are present, but the path has been observed rather than inferred, so the record can state which tool introduced the untrusted input and which read the sensitive data. Naming the path is what lets a reviewer confirm or refute the finding in seconds instead of reconstructing a session by hand, and a finding a human can check quickly is one they will actually check.

Effect: require_approvalRule key: toxic_flow.tainted_egressA person decides.
Aligned withOWASP-ASI ASI06, Memory and Context Poisoning
QX-L-0018Advisorysince 2026.07.2

Queldrex could not be reached

When the enforcement service is unreachable or times out, the in-process SDK applies the fail mode the customer configured, and records that the decision was made without us.

Why this rule exists

A governed call that cannot reach its governor still has to resolve one way or the other. Recording this as an ordinary allow or deny would put a claim in the record that we judged something we never saw. It is published as a law because the customer chooses the fail mode, and they are entitled to know that the choice is part of the ruleset rather than an implementation detail.

Effect: recordRule key: enforce.unavailableRecorded. Never blocks.
QX-L-0019Advisorysince 2026.07.1

A rule the account wrote for itself

An account may write rules that tighten any decision for its own traffic. The specific rule that matched is identified by the account's own rule id.

Why this rule exists

Customer rules are law over that account's traffic and belong in the corpus, but their text belongs to the customer, not to us. We publish that the category exists and that it is tighten-only; we do not publish another account's rules. Note the asymmetry this creates and accept it: an account can always explain its own decision, because it wrote the rule.

Effect: recordRule key: policy.customer_ruleRecorded. Never blocks.
QX-L-0020Approvalsince 2026.07.2

Account stop state could not be determined

When the kill-switch state cannot be read, an otherwise-allowed action requires human approval rather than proceeding.

Why this rule exists

A stop that fails open under a storage outage is not a stop, and one that fails closed turns a storage hiccup into a total outage. So an unreadable stop is treated as neither: it is indeterminate, and uncertainty about whether an account is stopped is resolved by a person, not by a silent allow. This is the availability layer applying the same rule as any other unresolved risk: when a required check cannot answer, the correct actor is a human.

Effect: require_approvalRule key: killswitch.indeterminateA person decides.

Where a citation appears

Ruleset queldrex:baseline version 2026.07.2 · 20 rules published · machine-readable at /api/trust/law. Resolve a citation on a receipt at /api/trust/ruling.