# Todo 52.1 Benchmark URL Control Characters Plan **Status:** done ## Goal Keep malformed benchmark targets inside the configuration error boundary instead of leaking an `httpx.InvalidURL` during live client construction. ## Scope - Reject ASCII and Unicode characters whose category is control/format, including NUL, CR, LF, and tab. - Retain the existing HTTP(S), no-userinfo, no-query, and no-fragment requirements. - Add focused valid/invalid URL regression tests. ## Files - Modify: `src/agent_lab/application/benchmark.py` - Modify: `tests/test_benchmark_config.py` ## Verification - `uv run pytest tests/test_benchmark_config.py tests/test_tool_invocation_comparison.py -q` - `uv run pytest` - `git diff --check` ## Observe / Update - Control-category characters are rejected before transport construction while printable internationalized URLs remain covered. - Focused tests passed (`67 passed`) and the full suite passed at this checkpoint (`472 passed`).