Accept uploaded report templates
Merge blocked
Unsafe deserialization in app/routes/admin.py:27. Fix it and push again to pass the check.
Security agent
Scripted demo replay
Instead of reading one big prompt, the agent plans, then investigates the code graph one tool call at a time and sees each real result before deciding what to check next.
- 1Inspect the changed function and where its inputs come from
- 2Trace entry points through the change to dangerous calls
- 3Read the code on the path for validation or auth checks
- 4Report only what the evidence supports
- Step 1Looked up
app.routes.admin:upload_templateStart with the changed symbol.
What it found
{ "id": "app.routes.admin:upload_template", "kind": "async_function", "file": "app/routes/admin.py", "lines": [ 25, 28 ], "params": [ "request", "admin" ], "entry_point": true, "route": "POST /report-templates", "depends_on": [ "require_admin" ], "untrusted_inputs": [ "request.body" ], "dangerous_calls": [ { "kind": "deserialization", "call": "pickle.loads", "line": 27, "reached_by_untrusted_data": true } ], "has_docstring": true } callers: (none) callees: app.auth:require_admin (app/auth.py:18-22) via line 25