Part of #21.
Goal: stop documentation from claiming security properties that don't hold, and warn loudly at startup when config is unsafe. No breaking config changes.
Tasks
Critical files
docs/CONFIG_REFERENCE.md, CLAUDE.md, src/main.cpp, src/config_manager.cpp, src/auth_middleware.cpp.
Verify
Unit test that startup-warning function fires for known-bad configs; grep DEBUG-level logs after a debug run to confirm no secret values appear.
Part of #21.
Goal: stop documentation from claiming security properties that don't hold, and warn loudly at startup when config is unsafe. No breaking config changes.
Tasks
docs/CONFIG_REFERENCE.md:1365andCLAUDE.mdclaim triple-brace{{{ }}}"prevents SQL injection". It does not — it only disables HTML escaping. The actual defenses areRequestValidator+ careful template authoring. Rewrite this section to document the real threat model honestly.src/main.cpp/src/config_manager.cpp:auth.users[*].passwordmcp-tool:ANDauth.required: falseAND server bound to non-loopbackauth.required: true(credential-bearing cross-origin requests)jwt_secret, connectionpassword, and AWS credentials currently leak at DEBUG level (src/auth_middleware.cpp:68,src/config_manager.cpp). Add aLogRedactorhelper used by config dump + error paths; cover JWT secrets in verification logging too.Critical files
docs/CONFIG_REFERENCE.md,CLAUDE.md,src/main.cpp,src/config_manager.cpp,src/auth_middleware.cpp.Verify
Unit test that startup-warning function fires for known-bad configs; grep DEBUG-level logs after a debug run to confirm no secret values appear.