Settings and license
Settings open from the cog at the right of the header. Its sections are listed down the left, grouped by what they apply to.
Settings opens from the cog at the right of the header; the plan beside it opens straight on License. Its sections are listed down the left:
- This machine — General, Recording and Console: the same whichever project is selected.
- Project — Capture and Redact, for the project chosen at the top of the group.
- Account — License.
General
| Setting | Default | What it does |
|---|---|---|
| JSON font size | 10 px | Between 10 and 20. Applies to every JSON view: request bodies, responses and traces. |
| Open the trace when a request is sent | On | Off, the runner stays in view with its response, and the trace is opened from Request History when you want it. |
| Leave the service name off hops under the same service | Off | A call a service makes reads POST localhost:8083/reserve under Shop API · POST /v1/orders, instead of naming the service again. |
| Show a call and the handler that answered it as one hop | On | A call out of one service and the request arriving in the next share a line when they agree. A pair that does not — one that failed — stays as two. |
| Show the timeline bars in Hops | On | Each hop’s bar beside its name: where in the request it ran, and for how long. |
| Mark a running service whose code was edited | On | Watches the folder a running service was started from, and marks its node edited when a file there changes. Off, nothing is watched. |
Recording
These decide how much of each request is recorded. They apply to services started after the change: stop and run a service again to use them.
| Setting | Default | What it does |
|---|---|---|
| Record execution | On | On, a service records what its own code did inside each request. Off, only its hops are traced: a send is then around a third of the size, and the service runs without the recorder slowing it. |
| Record requests from outside Debugt | Off | On, a request that did not come from the runner — Postman, a browser, a phone — is recorded too, and kept in Request History marked outside. |
| Max steps | 5,000 | How many steps of one request a service records before it stops and marks the recording cut short. From 500 up to your plan’s limit: 5,000 on Free, 200,000 on Pro. |
| Max size | 4 MB | How large one request’s recording may grow, between 1 and 64 MB. A larger recording costs the service memory while the request runs. |
| Max repeats per line | 0 | 0 records every run. Above 0, a line is recorded that many times within one call and further runs are folded into a count — so a hot loop no longer fills the step limit, but its middle runs cannot be stepped through one by one. |
| Value depth | 6 levels | How deep a recorded value is written out, between 2 and 20. Below it, an object or array shows only as [Object] or [Array], in the value and in what Copy copies. Deeper costs the service time on every line that changes a large value, and fills Max size sooner. |
| Value items | 50 entries | How many entries of an array, map or set a recorded value shows, between 10 and 1,000. The rest are counted. More costs the service time, and fills Max size sooner. |
Value depth and Value items are read by the Node, Python, Go and Java recorders alike. A value’s own size limit grows with them, so a value written out deeper is not then cut short for its length.
A launch configuration can set its own step limit with DEBUGT_EXEC_MAX_STEPS in its env.
It is still held to your plan’s limit.
Console
The canvas console’s look.
| Setting | Default | What it does |
|---|---|---|
| Font size | 10 px | Between 10 and 18. Its lines grow with it. |
| Background opacity | 10 | How solid its background is over the canvas, between 10 and 100: low to read the canvas through it, high to read the console over a busy one. |
Reset to defaults puts both back.
Capture
What is left out of traces and recordings. These lists are per project — the one chosen in
Settings’ Project group — and are saved under ~/.debugt. They apply to services started after
the change.
Don’t capture
Types that a recording shows as a one-line placeholder instead of in full, matched by class name — the value’s own class or any it is built on. There by default, each can be switched back on:
- Node’s HTTP layer, which Express’s
reqandresare:IncomingMessage,ServerResponse,ClientRequest,Socket,TLSSocket. - Fastify’s request and reply, Flask’s application, and the
Requestof Flask, Werkzeug, Starlette andfetch. - Mongoose’s internals: the module (
Mongoose), its connection (NativeConnection), a query not yet awaited (Query) and a collection (Collection, the MongoDB driver’s too). A document is left alone — it records as its fields.
Add your own — a database connection, a large client object — by name, or by clicking Don’t capture beside a value in a recording.
Don’t capture hops
Calls left out of traces entirely: a health check, a metrics scrape, a telemetry exporter.
- A path such as
/healthmatches requests a service receives and calls it makes. - A URL such as
https://api.segment.iomatches calls it makes. - Matched as a prefix ending at
/,?or:, so/healthis not/healthcheck. Use*for anything, as in/metrics*. - Choose a method, or ANY.
A skipped call carries no trace header either, so what it reaches is left out with it.
Redact
Values kept as redacted instead of what they were. Per project, like Capture, in three tabs. A body field or a recorded variable can be unticked to keep it in the clear for a while without taking it off the list.
Headers
Headers a trace records as redacted — on the runner’s own hop and in every service the project starts. These are always redacted:
authorization, proxy-authorization, cookie, set-cookie, x-api-key, apikey,
x-amz-security-token
Add your own, such as a tenant or session token. Applies to services started after the change.
Body fields
Fields whose values traces and Request History keep as redacted — in a JSON body at any depth,
and in a form body — for every send and every hop of the project: access_token, password.
None by default. The runner still shows the answer it got as it got it, so a token can still be
copied from there. Applies from the next send; what is already kept is left as it was.
Recorded variables
Names whose values a recording keeps as redacted: a variable, a key inside a value, an object’s
field — in Node, Python, Go and Java services. Matched anywhere in a name, whatever its case:
ssn takes out customerSsn. They are taken out in the service as it records, so the value
never leaves it.
- Always redacted:
password,passwd,secret,token,api_key,authorization,credential,private_keyandcookie. usernameis on a new project’s list from the start, marked default. Unlike those above, it can be unticked or removed: a username is often what a recording is read for.- One service can add names of its own, or switch one of the project’s off for itself alone, in its window’s Redaction section — see Canvases.
Applies to services started after the change. A running service whose list changed is offered a restart.
License
Shows the plan Debugt is on and what it allows: how many services run at once, how many steps of a request are recorded, how many overrides a library holds, and how many shared links are open.
The Free plan
No license, and none needed. Debugt works with no account and no network: up to 5 services running at once, 5,000 recorded steps a request, 5 overrides in each project’s override library, and 3 shared links open at once, each lasting up to 3 days. Pro takes the limit off services and libraries, records up to 200,000 steps, and keeps 50 links open for up to 7 days; a team member’s seat keeps 100, for up to 14 days. Request History has no limit on any plan: how many sends it keeps is yours to set. Get a license opens the pricing page.
Activating Pro
- Buy a license on the pricing page. The key arrives by email.
- Paste it into License key — it looks like
DBGT-XXXXX-XXXXX-XXXXX-XXXXX— and choose Activate.
A license is good on three of your machines at once. Activating a fourth is refused until one is released.
Once it is active
- The license is checked on your machine and renewed once a day while there is a connection. Offline, or with the license server out of reach, it stays good for 14 days.
- Check now renews it straight away — after renewing a subscription, for instance.
- Remove from this machine takes the license off this machine and frees its place for another. The key still works.
- Manage on the website opens your account: the machines the license is on, a new key, and your billing.
If a license stops counting
Debugt goes back to the Free plan and says why, in Settings → License:
- The license server says no — the subscription ran out, the license was refunded or revoked, or it was removed from this machine on your account. Pro ends at the next renewal, within a day while you are online, or at once with Check now. The 14 days are for being offline, not for a license the server has ended.
- It could not be renewed for 14 days — no connection, or the server out of reach for that long.
- It was activated on another machine — the license on this one was copied from there.
It never stops a running service and never hides anything already on your machine: back on the Free plan, more than 5 services simply will not start until fewer are running. Renew it, or enter the key again, and Pro is back.
What a license check sends
The license key when you activate, a hash of your machine’s id, Debugt’s version, and the license token when it renews. Nothing about your services, requests or traces. The full list is on the privacy page.
VS Code settings
A few settings live in VS Code’s own settings, under Debugt:
| Setting | Default | Meaning |
|---|---|---|
debugt.port |
4400 |
The port Debugt’s page is served on, on this machine only. |
debugt.openIn |
app-window |
app-window opens Debugt in a window of its own; browser-tab uses your default browser. |
debugt.openUiOnStartup |
false |
Open Debugt when VS Code starts. |
debugt.licenseServer |
empty | The license server’s address, for a network that reaches it another way. Empty uses Debugt’s own. Your license key, and every send you share, go there; Settings → License says so when it is set. |
debugt.shareWebsite |
empty | Where a shared send’s link opens. Empty uses debugt.dev. For working on Debugt’s own website. |
The last two are read from your user settings only. A workspace’s .vscode/settings.json
cannot set them, so a repository you open cannot send your license key, or your shared sends,
somewhere of its choosing.
Where settings are kept
| Setting | Kept |
|---|---|
| Capture and Redact, hosts, kinds, environment profiles, the broker, the override library | Per project, under ~/.debugt |
| Mark edited services, Record requests from outside | For this machine, in ~/.debugt/settings.json |
| Font size, trace display, recording limits, the console’s look | In this browser |
| The license | In VS Code’s secret storage — your system’s keychain |