passport-bootstrap — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited passport-bootstrap (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Restore an encrypted memory passport from a configured backend so a fresh mnemo-mcp install picks up the user's full memory history.
Trigger on explicit signals:
Do NOT trigger when the user is on an already-configured machine (check config(action="status") first - if total_memories > 0, ask before importing because import LWW-merges and may NOT overwrite local rows newer than the bundle).
Call config(action="status") and inspect the response. The default backend is the first entry of SYNC_BACKEND env (defaults to gdrive). If both s3 and gdrive are configured, ask the user which one to import from. If neither is configured, stop and tell the user they need to run the relay form first (config(action="setup_start") in HTTP mode, or set SYNC_S3_BUCKET + GOOGLE_DRIVE_CLIENT_ID env vars in stdio mode).
The bundle is AES-256-GCM-encrypted with an Argon2id-derived key from the user's passphrase. The MCP server needs the RAW passphrase to decrypt - the Argon2id hash stored in config.enc is verification- only.
In stdio mode: instruct the user to set SYNC_PASSPHRASE env var before running mnemo-mcp (or to relaunch with the env exported).
In HTTP mode: prompt the user to submit the relay form's passphrase field again (the raw value is held in process memory only and is cleared on restart - it is NEVER persisted).
Call config(action="import_passport", key="<backend>") where <backend> is s3 or gdrive. The server pulls the latest bundle from the chosen backend, decrypts with the supplied passphrase, and applies each row via last-write-wins per row (local rows newer than the bundle row are preserved + an audit row is written to sync_overrides).
After the response lands, call config(action="status") again and confirm total_memories matches expectations. If the response from step 3 reports inserted > 0 but total_memories did not move, something else is wrong (caller should escalate, not silently proceed).
the passphrase, do NOT pick a default value.
OR the bundle was modified at rest. Generic message by design (no passphrase oracle). Tell the user to double-check the passphrase; if confirmed correct, the bundle may need re-upload from a clean source.
the user has never run config(action="sync_now") from another machine, or the bucket name in the relay form was wrong. Ask them to verify on the source machine.
SYNC_S3_BUCKET is empty (for s3) or the gdrive token is missing. Run the relay form to populate.
config(action="sync_now") before import - that wouldpush the empty local DB on top of the remote, deleting other machines' state.
memory(action="import", data=...) - that importsPhase 1 JSONL files, NOT Phase 2 encrypted passport bundles.
Importing yields cryptic "Passphrase mismatch" errors instead of the cleaner "passphrase missing" pre-flight check.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.