hermes-agent/tools
Evo a4a562ff0c fix(browser): guard Camofox snapshot/vision/images on private pages
Follow-up to #56874, which added the Camofox private-page SSRF guard
(_camofox_current_page_private_url) but wired it only into the Camofox
eval path (_camofox_eval). The other Camofox content-read tools —
camofox_snapshot, camofox_get_images, and camofox_vision — still read the
current page's accessibility tree / images / screenshot without the
guard, so on a non-local Camofox backend they can return the content of
an intranet or cloud-metadata page (e.g. 169.254.169.254) that the
terminal itself can't reach.

Apply the same guard, gated on _eval_ssrf_guard_active (non-local
backend, not a local sidecar, allow_private_urls unset) and fail-open on
probe failure, matching the eval-path guard and the main-browser
snapshot/vision guards. camofox_back is intentionally not changed: its
target is unknown until navigation completes, and the subsequent content
read is already guarded.

Adds regression tests covering the three read tools blocking on a private
page, the public-page pass-through, and the guard-inactive no-probe path.
2026-07-02 17:07:17 +05:30
..
computer_use
…
environments fix(terminal): stop stripping CLAUDE_CODE_OAUTH_TOKEN from spawned subprocesses (#56935) 2026-07-02 02:13:30 -07:00
neutts_samples
…
__init__.py
…
ansi_strip.py
…
approval.py refactor(approval): extract is_approval_bypass_active(); use frozen-env bypass in codex routing 2026-07-01 22:58:37 +05:30
async_delegation.py fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2026-07-02 04:20:43 -07:00
binary_extensions.py
…
blueprints.py
…
browser_camofox.py fix(browser): guard Camofox snapshot/vision/images on private pages 2026-07-02 17:07:17 +05:30
browser_camofox_state.py
…
browser_cdp_tool.py Guard browser CDP on private pages 2026-07-02 05:23:23 +05:30
browser_dialog_tool.py
…
browser_supervisor.py fix(browser): harden browser tool safety boundaries 2026-07-01 05:04:41 -07:00
browser_tool.py fix(browser): guard Camofox eval private pages 2026-07-02 13:10:30 +05:30
budget_config.py
…
checkpoint_manager.py
…
clarify_gateway.py
…
clarify_tool.py
…
close_terminal_tool.py fix(config): accept 'on' as truthy for env flags via shared env_var_enabled helper 2026-07-02 03:00:59 -07:00
code_execution_tool.py
…
computer_use_tool.py
…
credential_files.py
…
cronjob_tools.py
…
daemon_pool.py fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2026-07-02 04:20:43 -07:00
debug_helpers.py
…
delegate_tool.py fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2026-07-02 04:20:43 -07:00
discord_tool.py
…
env_passthrough.py
…
env_probe.py
…
fal_common.py
…
feishu_doc_tool.py
…
feishu_drive_tool.py
…
file_operations.py
…
file_state.py
…
file_tools.py
…
fuzzy_match.py fix(patch): preserve file Unicode when unicode_normalized strategy matches 2026-07-01 17:48:32 +05:30
homeassistant_tool.py
…
image_generation_tool.py
…
interrupt.py
…
kanban_tools.py feat(kanban): route notifications via owning profile + wake creator agent 2026-07-02 00:05:48 +05:30
lazy_deps.py feat(vertex): add Google Vertex AI provider for Gemini (OAuth2) 2026-07-01 05:25:33 -07:00
managed_tool_gateway.py
…
mcp_oauth.py
…
mcp_oauth_manager.py
…
mcp_tool.py fix(tui): prevent killpg suicide during MCP shutdown 2026-07-01 04:54:46 -07:00
memory_tool.py
…
microsoft_graph_auth.py
…
microsoft_graph_client.py
…
neutts_synth.py
…
openrouter_client.py
…
osv_check.py
…
patch_parser.py
…
path_security.py
…
process_registry.py
…
project_tools.py
…
read_extract.py
…
read_terminal_tool.py fix(config): accept 'on' as truthy for env flags via shared env_var_enabled helper 2026-07-02 03:00:59 -07:00
registry.py
…
schema_sanitizer.py
…
send_message_tool.py
…
session_search_tool.py
…
skill_manager_tool.py
…
skill_provenance.py
…
skill_usage.py
…
skills_ast_audit.py
…
skills_guard.py
…
skills_hub.py fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2026-07-02 04:20:43 -07:00
skills_sync.py
…
skills_tool.py
…
slash_confirm.py
…
terminal_tool.py
…
thread_context.py
…
threat_patterns.py
…
tirith_security.py
…
todo_tool.py
…
tool_backend_helpers.py
…
tool_output_limits.py
…
tool_result_storage.py
…
tool_search.py
…
transcription_tools.py
…
tts_tool.py
…
url_safety.py fix(browser): narrow credential-query denylist to unambiguous names 2026-07-01 05:04:41 -07:00
video_generation_tool.py
…
vision_tools.py
…
voice_mode.py
…
web_tools.py fix(browser): harden browser tool safety boundaries 2026-07-01 05:04:41 -07:00
website_policy.py
…
write_approval.py
…
x_search_tool.py
…
xai_http.py
…
xai_video_tools.py
…
yuanbao_tools.py
…