Skip to main content
Once you’ve built a causal graph, you can use it as a safety net — every answer the Agent produces is checked against the graph, and contradictions are caught before the user sees them.

What gets checked

Nora extracts factual claims from the Agent’s response and compares them to the graph:
  • Directional claims — “A causes B” (checked against the edge structure).
  • Sign claims — “increasing A increases B” (checked against the edge’s sign).
  • Magnitude claims — “A is around 200” (checked against the variable’s known range).
  • Value claims — “the status is ‘error’” (checked against the discrete variable’s allowed values).

Setup

  1. Publish a causal graph (see Overview).
  2. Attach it to the Agent: Agent Inspector → Verification → Add graph.
  3. Pick actions per severity:
    • Warn — annotate the answer with a warning field; user still sees it.
    • Block — hold the answer, don’t send.
    • Rewrite — the Agent gets one more chance to answer, with the contradiction pointed out.
Defaults are conservative: warn on soft contradictions, block on hard ones.

Severity levels

  • Hard contradiction — the Agent says A→B; the graph says B→A. Or the Agent asserts a value outside a variable’s range.
  • Soft contradiction — the Agent asserts a sign the graph doesn’t confirm (but doesn’t refute either).
  • Consistent — everything checks out.
  • Uncheckable — no claims in the response matched anything in the graph.

Verification in a Trace

Every run with verification enabled shows a Verification panel in the Trace:
  • Each claim extracted from the answer.
  • Whether it matched, contradicted, or wasn’t found in the graph.
  • The specific graph edge or variable used to check.
  • The action taken (warn / block / rewrite).
Useful for tuning: if verification is flagging too many false positives, look at the failing claims and either add missing edges or adjust the severity threshold.

Rewrite loop

When set to rewrite, the Agent gets a follow-up turn with a system message like:
Your previous answer said A→B. According to the domain graph, B→A. Please re-answer.
The Agent produces a new response; verification runs again. Up to 3 rewrite attempts (configurable) before falling back to block.

Verification vs. retrieval grounding

  • Grounding (Retrieval grounding) checks retrieved chunks before they hit the Agent.
  • Verification checks the Agent’s final answer before it reaches the user.
Both use the causal graph; they’re complementary. Turning on both catches both “the Agent read bad context” and “the Agent hallucinated despite good context.”

Performance

Verification adds 100-400ms per run depending on how many claims the answer contains. For high-throughput Agents, consider verification only on high-stakes intents (routed via a Router block).

When verification is off

Some Agents genuinely shouldn’t be verified — creative writing, brainstorming, opinion prompts. Leave the graph unattached, or attach with all actions set to warn (never blocks, always visible in Trace).