Repository navigation
Installation
DoubleAgent has two required halves: Agent A in Burp and Agent B in a browser or macOS app.
- Burp Suite Professional or Community
- Jython standalone 2.7.x
- PortSwigger's MCP Server BApp for full Burp-native capability
- Python 3.10 or later when running Agent B from source
- macOS 13 or later for the optional Agent B application
- A model connection you configure yourself
-
Download and extract the latest
DoubleAgent-v3.0.1.ziprelease bundle. -
In Burp, open Extensions → Settings → Python Environment.
-
Select your Jython standalone JAR.
-
Open Extensions → Installed → Add.
-
Choose Python and select:
burp/DoubleAgent.py -
Confirm the Double Agent tab appears without an extension error.
-
Open the Agent AI tab and start the Agent API.
DoubleAgent.py automatically finds burp/src/. You do not need to select or move any of the internal files.
If an unusual launcher cannot locate the source folder, set DOUBLE_AGENT_EXTENSION_DIR to the extracted burp folder before starting Burp.
- In Burp, open Extensions → BApp Store.
- Install MCP Server by PortSwigger.
- Open Burp's MCP tab and enable the server.
- Keep the listener on
127.0.0.1:9876unless you have a local port conflict.
Agent B uses MCP indirectly: Agent B requests an action from Agent A, Agent A applies scope and safety gates, and only then does Agent A call the local MCP server. You do not need to configure Claude Desktop or the MCP stdio proxy.
Read PortSwigger MCP integration for the architecture, verification commands, fallbacks and security settings.
From the extracted source:
cd agent_b
./run.commandOpen http://127.0.0.1:4310.
Agent B uses the Python standard library and starts with no saved model connection. Its local state lives under agent_b/data/, which is ignored by Git and should never be shared.
Instead of the browser launch above:
- Download
Agent-B-macOS-v3.0.1.zipfrom the latest release. - Extract Agent B.app.
- Move it to Applications.
- Open the app.
Developers can build it locally:
cd agent_b
./build-macos-app.sh
codesign --verify --deep --strict "dist/Agent B.app"
open "dist/Agent B.app"With Agent A's API and Agent B running:
curl -s http://127.0.0.1:8777/api/health
curl -s http://127.0.0.1:4310/api/health
curl --max-time 2 -N -i http://127.0.0.1:9876/The Agent A and Agent B health checks should return JSON. The MCP request should return an event-stream response containing an endpoint event; its short timeout is expected.
- Add and test a model under Agent B → Settings → Add connection.
- Set the authorized target scope in Burp.
- Select Send bootstrap in Agent B.
- Review the target and scope Agent B received.
Continue with Configuration or Operator Workflows.