How to Increase the Timeout for holehe Checks: Command-Line and Scripting Guide

Use the -T or --timeout flag followed by the number of seconds (e.g., holehe -T 30 email@example.com) to override the default 10-second limit when running OSINT checks with the megadose/holehe tool.

The holehe OSINT framework performs asynchronous email enumeration across hundreds of platforms using httpx.AsyncClient. By default, the tool abandons requests after 10 seconds, which can cause false negatives on slow networks or heavily rate-limited endpoints. Increasing the timeout for holehe checks requires no source code modifications; you can configure it directly via CLI arguments parsed in holehe/core.py.

Configuring the Timeout via Command Line

The global timeout parameter is defined at line 194 in holehe/core.py, where the argument parser accepts the -T / --timeout option. At line 213, this value instantiates the shared httpx.AsyncClient used by all modules in the holehe/modules/ directory.

To increase the timeout, append the flag followed by an integer representing seconds:

holehe -T 30 example@example.com

This command sets the maximum wait time to 30 seconds for every HTTP request issued during the check cycle.

Basic Usage Examples

  • Standard 20-second timeout

    holehe -T 20 user@example.com
  • Extended 60-second timeout for slow services

    holehe --timeout 60 user@example.com

Embedding Timeout Configuration in Automation

When integrating holehe into Python scripts or CI/CD pipelines, pass the timeout flag as a string element in your subprocess call to ensure proper argument parsing.

Python Subprocess Implementation

import subprocess

email = "user@example.com"
timeout_secs = 25
subprocess.run(["holehe", "-T", str(timeout_secs), email])

This approach respects the CLI interface defined in the source code while allowing dynamic timeout configuration based on runtime conditions.

How the Timeout Propagates Through the Codebase

According to the megadose/holehe source code, the timeout value flows through the following path:

  1. CLI Parsing: Line 194 in holehe/core.py captures the --timeout argument with a default value of 10.
  2. Client Initialization: Line 213 passes this value to httpx.AsyncClient(timeout=timeout_value).
  3. Module Consumption: All check modules in holehe/modules/ receive the same client instance, ensuring consistent timeout behavior across every platform check.

Because the timeout is set at the client level during initialization, it applies globally to every HTTP request made during a single holehe execution.

Summary

  • Default behavior: holehe uses a 10-second timeout for all HTTP requests via httpx.AsyncClient.
  • Configuration method: Use -T or --timeout followed by seconds (e.g., -T 30) when invoking the tool.
  • Implementation location: The argument is parsed at line 194 and applied at line 213 in holehe/core.py.
  • Global scope: The timeout value affects all modules uniformly because they share a single client instance.
  • Scripting compatibility: Pass the flag as a string in subprocess calls to maintain CLI compatibility.

Frequently Asked Questions

What is the default timeout for holehe checks?

The default timeout is 10 seconds, hardcoded in the CLI argument parser in holehe/core.py. This value is passed directly to the httpx.AsyncClient constructor unless overridden by the user.

Does increasing the timeout affect all modules equally?

Yes. Because holehe/core.py instantiates a single httpx.AsyncClient instance at line 213 and shares it across all modules in holehe/modules/, the timeout you specify applies universally to every platform check performed during that run.

Can I set different timeouts for specific websites?

No. The current architecture in megadose/holehe supports only a global timeout parameter. The shared client instance does not support per-module or per-domain timeout overrides without modifying the individual module files to instantiate separate clients.

What happens if a request exceeds the specified timeout?

When a request exceeds the timeout limit, httpx raises a TimeoutException, which holehe catches and interprets as a failed or unavailable check for that specific platform. The tool logs the timeout and continues processing the remaining modules rather than terminating the entire scan.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →