Skip to content

Debugging tools

Breakpoint

Pause matching requests or responses in Cloak Proxy, edit the method, URL, headers, body or status, then execute, cancel or abort them.

A breakpoint stops a request on its way to the server, or a response on its way back to the app, and waits for you. While it’s paused you can change anything: the method, URL, headers and body of a request, or the status code, headers and body of a response. Use it to try an edge case once, by hand, without writing a script or a mock.

  1. Right-click a request in the traffic list and choose Tools › Breakpoint….

    Cloak Proxy creates a rule that matches the request’s method and URL (without the query string), turns Breakpoint on, and opens the rule. To start from scratch instead, choose Tools › Edit Breakpoint Rules… (⌥ ⌘ B) and click +.

  2. Check the matcher. See Rules and matching for wildcards, regex and subpaths.

  3. Under Pause on, choose what to stop:

    • Request: edit the method, URL, headers or body before it’s sent
    • Response: edit the status, headers or body before the app gets it
  4. Make the request again in your app. Cloak Proxy plays a sound, brings itself to the front and opens the Breakpoint window.

A Breakpoint rule created from a request. Both the request and the response pause.

  1. The URL to pause on.
  2. Pause the request before it's sent.
  3. Pause the response before the app gets it.
  4. Turns every breakpoint rule on or off.
A Breakpoint rule for GET https://api.example.com/v1/users with both Pause on options checked
Setting Default What it does
Name and matcher Which requests pause. See Rules and matching.
Request: edit the method, URL, headers or body before it’s sent On Pauses the request after request scripts run and before Map Local, Mock Sets, Map Remote and the server.
Response: edit the status, headers or body before the app gets it On Pauses the response after response scripts run and before the app receives it.

Only the first matching breakpoint rule counts. If that rule pauses only responses, the request isn’t paused even if a later rule would pause it.

A paused request. Edit anything, then click Execute.

  1. Paused messages, oldest first, with their stage, method, time, URL and rule.
  2. Abort: drop it and close the app's connection.
  3. Cancel: send the original, ignoring your edits.
  4. Execute: send it with your edits (⌘↩).
  5. Continue All: send every paused message on, unedited.
The Breakpoint window with two paused messages on the left and a paused GET request on the right showing its URL, four headers and an empty body

The editor shows Request paused with the request number and the rule name. Under Request you can change:

Field Notes
Method GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, CONNECT or TRACE.
URL The full URL, including the query string. Change the host to send the request somewhere else.
Headers Edit names and values in place, click Add for a new header, or click the minus button to remove one.
Body Plain text. If it’s JSON, the editor shows Valid JSON with Format and Minify buttons, or Invalid JSON when a body starting with { or [ doesn’t parse.

Compressed bodies (gzip, deflate, Brotli) are decompressed before you see them, and the Content-Encoding header is removed, so you always edit readable text. Cloak Proxy recalculates Content-Length when you click Execute, so you don’t need to update it.

A paused response. Pick a status from Quick status to test error handling.

  1. Status code. The reason phrase updates as you type.
  2. Quick status: common codes in one click.
  3. Format or minify a JSON body.
A paused 200 response to GET api.example.com/v1/users with four headers and a JSON body marked Valid JSON

The editor shows Response paused and the request it answers (Response to GET …). You can change:

Field Notes
Status code Any number. The standard reason phrase is shown next to it and sent with the response.
Quick status Sets the status to 200, 201, 204, 301, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502 or 503.
Headers Same editor as for requests.
Body Same editor as for requests, decompressed.

Each paused message waits until you decide what to do with it.

Button Shortcut What happens
Execute ⌘ ↩ Sends the message on with your edits.
Cancel Esc Sends the original message on and throws away your edits.
Abort Drops the message. The app’s connection is closed, as if the network failed. The request shows as failed with Aborted at the request breakpoint or Aborted at the response breakpoint.
Continue All At the bottom of the list. Sends every paused message on, unedited (the same as Cancel for each).

The window opens by itself when something pauses. You can also open it with Tools › Breakpoint Window, or by clicking N paused at breakpoint in the main window’s status bar.

Part What it shows
Paused list Every paused message: a Request or Response badge, the method, the time it paused, the URL and Rule: …. Select one to edit it.
Count N paused at the bottom of the list.
Editor The selected message.
Empty window Nothing paused, with Manage Breakpoint Rules… to open the rules.

Several requests can be paused at once, for example when an app loads a page. Each one waits on its own; deciding on one doesn’t release the others.

  • Request scripts run before the request pauses, so you see their changes. Response scripts run before the response pauses.
  • Responses from Map Local and Mock Sets pause too, so you can tweak a mock before the app sees it.
  • Editing the URL at the request breakpoint changes what Map Local, Mock Sets and Map Remote see. The response breakpoint still matches the original URL, so it pauses even if you changed the URL.
  • Requests sent with Repeat or Compose pause like live traffic.

See What happens when several tools match for the full order.

The MCP server has two tools for breakpoints: list_paused lists what’s waiting, and resolve_paused sends a message on with edits (send), unedited (send_original), or drops it (abort). See the MCP tools reference.