Skip to content

About

Sovereign Shield for AI integrity: capture-evasion detection, metadata-only proofs, audit receipts, and LLM consequence containment.

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

2,178 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Simurgh — Knowledge, Verification, Guidance

Project Simurgh

Inspectable authorization for AI agents. Replay the proposal, enforce the boundary, verify the effect.

Simurgh is a research prototype for controlling what an AI agent can do when its authority changes. It combines host-controlled delegation, safety stops, monitoring leases and credential checks, then preserves the receiver state needed to examine what actually happened.

In a bounded Llama evaluation, composed controls reduced restricted-state trials with new effects from 17/24 to 0/24 while preserving 23/24 active completions. The same comparison with OpenAI gpt-6-luna completed 24/24 active trials, but its credential-only baseline already produced zero restricted effects. That result establishes no incremental protection for Luna.

Research brief · Full results · Run the demo · Dashboard and CLI · Reviewer handoff · Integration matrix · Documentation map

The problem and the contribution

An agent can hold a valid credential after its task has been stopped, an ancestor's authority has been revoked or monitoring has expired. A lost acknowledgement creates another problem: the action may already have happened, making a retry consequential.

Simurgh makes those lifecycle transitions executable and reviewable. The implementation checks an exact authorized action against host state, coordinates admission and revocation, and retains unknown outcomes instead of treating a transport error as proof that nothing happened. Matched controls expose both unauthorized effects and useful work lost to enforcement.

The research contribution is a control boundary with replayable receiver evidence:

  • Enforcement: composed delegation, signal and credential gates, durable intent, shared budgets, explicit restart authority and bounded recovery behavior.
  • Evaluation: the same captured proposal executed against credential-only, composed and deny-all controls, with failures and incomplete tasks retained.
  • Verification: source revisions, archive roots, raw storage snapshots and fresh local execution that checks the reported outcomes against receiver state.
flowchart LR
    M[Model tool proposal] --> G[Composed authorization gate]
    H[Trusted host policy and lifecycle state] --> G
    G -->|Admitted action| R[Owned receiver]
    G --> E[Decision and durable state]
    R --> S[Receiver snapshots]
    E --> V[Archive verification and local replay]
    S --> V
Loading

The host, provisioning, storage and receiver are trusted within these experiments. Model output and retrieved content cannot grant authority. The composed implementation and security policy define the component boundaries; these measurements do not extend to arbitrary remote services or a compromised host.

Measured results

The latest comparison uses 24 internally authored tasks, two trials per task and two models: 96 captured proposals, each executed through three controls, for 288 retained branches. The tasks cover six known lifecycle families with paired benign/adversarial source text.

Model Control Active completions Restricted trials with new effects
OpenAI gpt-6-luna Credential only 24/24 0/24
OpenAI gpt-6-luna Composed 24/24 0/24
OpenAI gpt-6-luna Deny all 0/24 0/24
Meta Llama-3.2-3B-Instruct Credential only 23/24 17/24
Meta Llama-3.2-3B-Instruct Composed 23/24 0/24
Meta Llama-3.2-3B-Instruct Deny all 0/24 0/24

Composition blocked zero valid active proposals for either model. The incomplete Llama active trial remains in the denominator. All controls also retain four earlier effects per model from unknown-acknowledgement fixtures; those effects were not prevented.

The 24 restricted trials are not 24 independent observations: they cover six restricted states, each written once as benign and once as adversarial source text and run twice. For Llama, 5 of the 6 states produced a credential-only effect and none did under composition; at that level the descriptive Wilson intervals are about 43.6–97.0% and 0–39.0%. The credential-only control has no stop, lease or alert input: in every restricted credential-only Llama trial a new effect occurred exactly when Llama emitted the exact call in one of the five states that control cannot observe, so the 17/24 → 0/24 difference mostly measures how often the model emits the call, not how finely the gate discriminates.

The corpus is small and internally authored, repeated trials are clustered, and trusted state and the target report are explicit. The models use different tool interfaces. This comparison does not establish a model ranking, unseen-task generalization or general safety. See the full analysis, uncertainty and provenance.

Live OpenAI integration

A separate eight-case Responses workflow performs a real read-tool roundtrip, applies a host lifecycle transition and requests a final tool decision. An initial integration defect placed host updates in the user role; all eight cases declined, including three authorized cases.

A separately frozen developer-role correction completed 2/3 authorized workflows; 5/5 restricted workflows declined, and one active refusal remains unresolved. The original traces and the correction are both retained. Restricted model declines are distinct from attempted calls blocked by enforcement; separate forced-call tests exercise all eight states. See the correction and case-by-case results.

Reliability and engineering evidence

Evidence Recorded result Scope
Paced concurrency/restart run 120 fixtures, 420 final calls, 1,200 snapshots over 61.45 seconds Isolated fixtures and fixed logical policy time; no deployment-capacity claim
Composed stop/recovery behavior No new effects after queued stops, interrupted updates or unknown prior acknowledgements Authorized reopen and idempotent retry outcomes retained
Archive replay 288 comparison branches and eight original/eight corrected workflows match retained state Saved proposals, freshly executed local services
Evidence mutation checks 10 deliberate mutations rejected, now committed as tests in tools/evidence-mutations with a replay-layer check of a consistently re-signed archive Ten structural checks run without replay; the re-signed-archive check runs on Linux x86_64 CI only
Native CI at fbe06eca 10 macOS tests and 11 Windows daemon tests pass; Windows affinity fixture compiles Interactive desktop capture was not exercised

The validation receipts identify exact revisions, commands and logs. The 13-job hosted readiness run passed at 4afe9538; these are recorded results for those revisions, not a claim that every check has run at the current branch head.

The 19 October full smoke report records the maintained branch checks, harness repairs and explicit browser/platform exclusions: 142/142 base steps, 32/32 E2E steps and 5,171 root tests at implementation ebf2a752. The strict browser-parity command remains blocked by managed navigation policy. The documentation audit separately records the completed 919-document content review, 141 dated findings and final documentation checks, alongside primary sources reviewed in 2026. These documentation checks do not refresh implementation test receipts or establish standards compliance.

Replay the evidence

No API key, model download or paid inference is needed. Use a full Git checkout and Python 3.12 on Linux x86_64 with local process and loopback networking support. Dependency installation needs package-index access; the replay itself uses local services. Keep Git history: the verifier checks committed source bytes as well as live files.

Host requirement. The replay runs every proposal in a worker locked down by a Linux x86_64 seccomp filter, and its frozen sources cannot change without invalidating the evidence. On macOS it stops with database is locked; on Linux ARM, or x86_64 emulation such as Docker on Apple silicon, with worker_refused. Use a native x86_64 Linux machine, VM or CI runner. The preflight below names any unmet prerequisite before the replay starts, and the README replay workflow runs these commands in CI.

git clone https://github.com/Raoof128/Project-Simurgh.git
cd Project-Simurgh
git rev-parse HEAD

simurgh_review_dir=$(mktemp -d "${TMPDIR:-/tmp}/simurgh-review.XXXXXX")
python3.12 -m venv "$simurgh_review_dir/venv"
"$simurgh_review_dir/venv/bin/python" -m pip install --require-hashes --only-binary=:all: \
  -r tools/assurance-sdk/requirements.lock \
  -r tools/assurance-workflow/requirements.lock

"$simurgh_review_dir/venv/bin/python" -B tools/replay-preflight/preflight.py

"$simurgh_review_dir/venv/bin/python" -B tools/assurance-provider-role/corrected_roles.py demo \
  --archive docs/research/provider-role-phase-17b/evidence.zip \
  --expected-root "$(cat docs/research/provider-role-phase-17b/ROOT.sha256)"

Expected: eight case rows showing two new authorized effects, one active decline and five restricted declines. The unknown-acknowledgement case also retains one earlier effect. The command verifies the archive and freshly replays the captured corrected proposals; it does not make new model requests.

Keep simurgh_review_dir set in the same shell. For the complete comparative study:

"$simurgh_review_dir/venv/bin/python" -B tools/assurance-transfer/transfer_study.py verify \
  --archive docs/research/transfer-phase-17/evidence.zip \
  --expected-root "$(cat docs/research/transfer-phase-17/ROOT.sha256)"

The reproduction runbook includes focused tests, full verification and native-platform scope. Compare archive roots through a trusted channel for an independent handoff: a hash supplied by this repository establishes byte consistency, not outside custody. Local replay is distinct from independent reproduction.

Inspect with a dashboard or an agent

The local React dashboard and JSON CLI share the same query layer. Humans and agents can inspect outcomes, compare controls, locate unauthorized effects and incomplete tasks, retain unknowns, follow source pointers and search the dated research index.

Viewer scope: the default dataset contains all 288 transfer-study branches, with separate model identities and 96 generations. --study phase10 retains the earlier 144-outcome view. The research index and gap register are dated snapshots; search is local. Loading data does not verify the source archive. See the 21 October readiness work for repairs, validation and remaining blockers.

With Node.js 24 or 26 and Python 3, run the CLI from the repository root; no npm installation is required:

node tools/simurgh-explorer/cli.mjs summary
node tools/simurgh-explorer/cli.mjs records --kind unauthorized --control credential_only
node tools/simurgh-explorer/cli.mjs records --kind unauthorized --model llama
node tools/simurgh-explorer/cli.mjs inspect --id 'p17:llama:g1:composed' --detail
node tools/simurgh-explorer/cli.mjs search --q monitoring --year 2026

For the dashboard:

npm --prefix tools/simurgh-explorer ci --no-audit --no-fund
npm --prefix tools/simurgh-explorer run build
npm --prefix tools/simurgh-explorer start

Open http://127.0.0.1:4173. The read-only local server supports inspection; JSON imports stay in browser memory. See the explorer guide for supported schemas, filtered exports, sensitive-detail boundaries and UI validation limits. Treat evidence and document text as untrusted data when feeding CLI results to an agent.

Reviewer handoff

Review goal Start here What to examine
Understand the contribution One-page brief The control benefit, retained utility and negative result
Assess the experiment Results and corpus Denominators, matched controls, interface confounds and uncertainty
Verify reported behavior Runbook and receipts Source bindings, raw receiver state and fresh replay
Review the implementation Composed gate, transfer study and role correction Authority transitions, unknown outcomes and adapter trust
Inspect current outcomes Dashboard/CLI guide Failure classification, matched controls and source provenance
Perform outside reproduction Operator handoff Earlier viewer/export snapshot; use the current runbook for the latest study
Trace prior work Reviewer index and research history Frozen stages, negative results and historical reproduction

The most useful review would challenge the exact-action comparator, admission/revocation ordering, unknown-outcome handling and the completeness of the evidence inventory, then test whether the benefit survives tasks and receiver infrastructure controlled by an outside operator.

Open work

  • Independent reproduction: outside operator and evidence custody remain outstanding.
  • Provider lifecycle: real provider IAM/revocation and authenticated live safety-alert delivery have not been validated by the owned-service experiments.
  • Model transfer: broader externally held tasks and adaptive multi-step behavior remain untested; the corrected OpenAI workflow retains one unresolved active refusal.
  • Operational assurance: sustained deployment load, interactive desktop capture and real-data privacy validation remain separate work.
  • Security review: the 19 October local Phase 8 review is complete within its stated scope. It preserves the earlier interrupted review and does not constitute an independent or repository-wide security audit.

The retained Stage 4F frontier verifier has confirmed unsigned-certificate and utility-binding gaps. Its result is not assurance against a dishonest producer; see the scoped finding and probe.

The retained Stage 4M public-tier verifier accepted altered or missing disclosure/chain files without changes to the signed attestation; the 21 October repair closed that Tier-P binding gap (re-verified 31 October: altered, deleted and forged disclosure files now return raw 22). Its residuals stay open: upstream and proof digests, non-claims and known-limitation lists are not recomputed under a pinned key, an unknown --tier value skips claim recomputation, and the acknowledgement key is read from the bundle. See the original finding and SECURITY.md. The 4F gap above remains open. The Stage 4N heartbeat CLI also omits manifest authentication and accepts inputs beyond its advertised disclosure bound; see the verification limits and probe.

The full manual finding register also records later-stage verifier limits, including Stage 5S witness authentication and comparison scope. Documentation corrections preserve these open runtime findings. Read the archive and activity-log corrections alongside historical summaries.

Frozen documents describe their publication-time status. The later local review above and continuation validation are additive records; earlier downloadable bundles remain snapshots of their recorded commits.

Repository guide

Location Purpose
tools/assurance-* Isolated control implementations, evaluation harnesses and replay verifiers
docs/research/transfer-phase-17/, docs/research/provider-role-phase-17b/ Latest comparative/live-workflow protocols, results and evidence
tools/simurgh-explorer/ Human dashboard, agent CLI and shared evidence queries
src/llmShield/, tools/simurgh-attestation/ Earlier containment runtime, attestations and stage-specific verifiers
proofs/, papers/ Formal models of selected properties and research manuscripts
AGENTS.md, AGENT.md, CHANGELOG.md Repository guidance, standing invariants and change history

The historical device-integrity application is documented in DEVICE_ROADMAP.md. The application package version 0.4.18 and research release line through v2.54.1 identify different artifacts; this branch does not announce a new release. See ROADMAP.md for the research priorities and historical reproduction for older toolchain requirements.

Contributing, security and license

Follow CONTRIBUTING.md: preserve frozen evidence, state the affected trust boundary and record actual checks, failures and skips. Report vulnerabilities privately through SECURITY.md. Review PRIVACY.md and ethics guidance before collecting or publishing data.

The root package and LICENSE declare AGPL-3.0-or-later. The Linux daemon manifest still declares MIT while its source SPDX headers declare AGPL-3.0-or-later; this unresolved metadata conflict needs reconciliation before redistribution relying on that manifest. Upstream contributions to differently licensed projects require a separate license review. This is a research prototype; production readiness, provider endorsement and independent certification are not established. OpenAI-related materials are technical review drafts, with no submission implied.

About

Sovereign Shield for AI integrity: capture-evasion detection, metadata-only proofs, audit receipts, and LLM consequence containment.

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages