Every defensive claim on the homepage maps to a specific test in the open-source repository. This page is the index. Each entry shows the claim, the canonical test file, and the assertion line that proves it.
The strongest claim MahaGuardian makes is that bypass paths do not exist in the codebase. These tests assert it directly: the function cannot be imported because it has been removed.
The agent has no alternate read path into the vault. Bypass functions deleted.
tests/test_vault_phase3.py :: TestVaultStructuralEnforcement
enforce() delegates to the canonical pipeline (TLP check, param scan, item lookup). It cannot be bypassed because the bypass calls are mocked and asserted-called.
tests/test_enforce_integration.py :: TestEnforceCallsCanonicalFunctions
Legacy partition-access enforcement and its error type have been removed entirely. The attack surface is gone.
tests/test_attacks.py :: test_cross_agent_vault_access
Guardian API is bound to localhost only. The owner's device is the only host that can reach it.
tests/test_attacks.py :: test_guardian_api_not_accessible_externally
LLM API keys are never written to disk in plaintext. A filesystem scan after vault operations finds nothing.
tests/test_attacks.py :: test_llm_key_not_in_agent_filesystem
Agent rules are ed25519-signed by the owner's device. Tampering — direct rewrite, schema corruption, missing signature, hash mismatch — is detected before the rule is loaded.
Direct rewrite of a signed SOUL.lock file is detected by signature + hash verification at load time.
tests/test_attacks.py :: test_soul_lock_direct_write_blocked
All SOUL.lock error paths return the same generic message. An attacker cannot probe internal state from error responses.
tests/test_soul_security.py :: test_all_invalid_soul_errors_use_same_message_prefix
Schema validation timing is uniform between valid and invalid inputs. No timing oracle.
tests/test_soul_security.py :: test_valid_vs_invalid_schema_timing_similar
Guardian Access Tokens are scoped, time-limited, and cryptographically bound to the agent's mTLS certificate. Permissions are derived from the vault at issuance, not from the request.
Tokens are bound to the agent's mTLS certificate. Presenting a token with the wrong certificate is rejected.
tests/test_attacks.py :: test_token_agent_mismatch
Expired tokens are rejected at the verification boundary, not at the application layer.
tests/test_attacks.py :: test_expired_token_rejected
Token permissions come from the vault at issuance, not from caller-supplied request fields. Caller cannot elevate by lying.
tests/test_attacks.py :: test_token_permissions_come_from_vault_not_request
The core product claim. An agent working on Engagement A cannot reach Engagement B's data, even when the same human operator is involved in both. Twelve parametrised scenarios exercise allow / deny / elevate across six agent profiles.
Twelve-case truth table: every combination of agent profile × data key produces the expected allow / deny / elevate outcome end-to-end.
tests/test_integration_truth_table.py :: TestIntegrationTruthTable.test_truth_table
Cross-partition access at the HTTP API returns 403 with the generic access_denied message. No information leak about whether the resource exists.
tests/test_attacks.py :: test_cross_partition_via_api
Confused-deputy via tool params is caught. An agent with company-a credentials cannot smuggle a company-b path through tool arguments.
tests/test_attacks.py :: test_tool_params_confused_deputy_via_api
Injection of control characters (commas, equals) in payment recipient fields is rejected before reaching accounting. Audit log integrity preserved.
tests/test_attacks.py :: test_recipient_injection_neutralized_at_api
Every enforcement decision is appended to a hash-chained SQLite log keyed with an HMAC. Tampering is detectable; UPDATE and DELETE are blocked at the database authorisation layer.
Tampering with any field in a logged decision is detected at verification time. The chain breaks.
tests/test_audit_chain.py :: test_verify_detects_tamper_in_decision
UPDATE on the audit chain table is denied at the SQLite authorisation layer, not just by application policy.
tests/test_audit_chain.py :: test_append_only_update_blocked
ELEVATE decisions (human-approval gate) are logged with the same fields as ALLOW and DENY, in chain order.
tests/test_audit_chain.py :: test_elevate_entry_logged
An attacker probing the enforcement boundary cannot learn whether a resource exists by comparing error messages or response timing.
"Key not found" and "access denied" expose the same safe message at the caller boundary.
tests/test_anti_probing.py :: test_not_found_and_denied_have_same_safe_message
"Key not found" and "access denied" have comparable response times. No timing oracle.
tests/test_anti_probing.py :: test_not_found_vs_denied_timing_comparable