Research prototype. Synthetic/demo data only. Not for diagnosis, treatment, clinical use, or production. It is not production security and makes no HIPAA or production-compliance claims.
DEMO_MODE=true does not make arbitrary identifiers safe. Obvious
real-looking identifiers are rejected where practical; this is not
de-identification.
- Deny-by-default for
/api/*. - Patient intake writes (
POST /api/v1/patient/profile,POST /api/v1/patient/appointment) and clinical helpers (/summary,/evidence,/codes, RAG search/status) are open for the demo, with synthetic-data checks on persisted intake. - Doctor/admin-style reads (profile list/get/delete, stats, analytics dashboard/trends)
require a random operator session from
POST /api/v1/auth/demo-operatorusingDEMO_ACCESS_CODE. SendAuthorization: Bearer <operator_session>. - Username-derived UUIDs are not authentication.
POST /api/v1/auth/loginis disabled. - File, notification, export, search, token-in-path reads, RAG index builds, and unauthenticated patient dumps are disabled (403).
- Placeholder clinical LLM/report generation returns 501 (not implemented), not a fake 200 diagnosis or treatment plan.
- Live demo helpers (
/summary,/codes,/evidence) include aprovenanceobject (openai/fallback/rules/rag/static). They are not clinical decisions. - UI routing is not authorization.
Patient correlation ids live in sessionStorage and request JSON bodies.
They are not placed in query strings or shown in the UI.
Summary-path operational logs use content-free event, status, and count fields; they do not serialize intake, normalization/negation metadata, prompts, or raw model output. Request logging excludes bodies, tokens, and raw retrieval queries. Identifier-pattern redaction on every output handler is defense in depth, not complete PHI detection or de-identification, and is not a guarantee about arbitrary medical text.
Ignore local SQLite files (data/medigator.db and *.db / WAL/SHM sidecars),
uploads, generated PDFs/reports, logs, and FAISS rebuild outputs. Tracked
data/ JSON/CSV fixtures and docs/ sources are synthetic demo content, not
runtime dumps. The committed rag_index/ files are treated as a demo fixture
so search can run without an index-build API. PostgreSQL is not a runtime
backend.
The security-remediation audit was performed at
6bcdf146416c62d31bdfc8d95e0ee788909e2113. This is an audit record, not a
continuing guarantee about every future commit. Matched values are not written
here.
| Check | Verdict |
|---|---|
Audited-tree regex scan (PEM headers, AKIA… keys, assigned api_key/secret_key literals) |
Clean for tracked source. Placeholders in *.env.example were allowlisted. |
History through the audited commit: added *.pem / *.key / .env / id_rsa / credentials.json |
None found. |
| GitHub secret-scanning alerts | NOT VERIFIED — local gh authentication to github.com was invalid. |
| Rotation | Not performed. No live third-party credential was confirmed. |
DEMO_ACCESS_CODE is a shared demo operator password for this prototype, not a cloud credential. Do not treat it as production IAM.
Backend pre-commit/lint/tests, frontend typecheck and build, and Docker HTTP
smoke are blocking.
The GitHub Actions dependency-report job runs safety check and uploads an
artifact; it is nonblocking (current safety check reports many findings
in the torch/transformers stack). A green report job does not mean zero
vulnerabilities. Frontend ESLint is absent.