feat(security): apply audited PR #6738 remediations and test hardening

- Enforce vision probe SSRF safe local host validation, SafeProbeBackend TOCTOU elimination, and session owner authorization
- Authorize session titling endpoints against registered owner configuration
- Sanitize sensitive metadata logging from agent loop debug logs
- Add async non-blocking execution for spec router tools and thinking decisions
- Harden email cache invalidation fencing and thread-safe mutation
- Add regression test suites for legacy browser authority, spec contracts, spec router request scoping, and task MCP delivery
This commit is contained in:
Alexandre Teixeira
2026-10-27 17:25:25 +00:00
parent 3246ae5d9c
commit 0133de6f0e
43 changed files with 2187 additions and 673 deletions
+6 -2
View File
@@ -31,7 +31,7 @@ def test_unrelated_override_receives_no_saved_credentials(monkeypatch, url):
monkeypatch.setattr(tasks, "resolve_endpoint", lambda *a, **k: (None, None, {}))
monkeypatch.setattr(tasks, "resolve_utility_fallback_candidates", lambda **k: [])
candidates = resolve_task_candidates(override_url=url, override_model="test")
assert candidates == [(url, "test", {})]
assert candidates == []
runtime.assert_not_called()
@@ -73,7 +73,11 @@ def test_credential_resolution_is_exact_and_owner_scoped(monkeypatch, tmp_path,
monkeypatch.setattr(settings, "get_setting", lambda key, default=None: default)
try:
if resolver_kind == "task":
headers = tasks.resolve_task_candidates(override_url=url, override_model="test", owner=owner)[0][2]
candidates = tasks.resolve_task_candidates(override_url=url, override_model="test", owner=owner)
if expected is None:
assert candidates == []
return
headers = candidates[0][2]
else:
from routes.skills_routes import _resolve_audit_models
headers = _resolve_audit_models(owner=owner, endpoint_url=url, model_spec="test")[2]