Skip to content
GurtOS

Change some settings

PATCH
/settings
curl --request PATCH \
--url http://127.0.0.1:7700/api/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "approvalThresholdCents": 2000, "networkDefault": "allowlist", "defaultHosts": [ "example.com" ] }'

Owner only. Changes only the keys you send; quietHours and appearance merge one level deep. An unknown key or a bad value is a 400 that names the field, and nothing changes. Each change is a note event in the log with the old and the new value. The settings are saved in BOX_HOME/settings.json.

Media typeapplication/json
object
approvalThresholdCents

A single spend above this, in US cents, always asks for an OK, even inside the task’s budget.

integer
default: 500 <= 100000000
defaultBudgetCents

The budget of a task that names none. 0 means every spend asks.

integer
default: 100 <= 100000000
watchLimitCents

The most an Apple Watch token may approve. 0 means a Watch may only deny.

integer
default: 2500 <= 100000
paused

The kill switch. While true no task starts (new ones stay queued) and running ones hold before their next step, tool call or question. The box sets it itself at start when permissions.json cannot be read.

boolean
networkDefault

With allowlist, a task that names no hosts gets defaultHosts.

string
default: none
Allowed values: none allowlist
defaultHosts
Array<string>
default: <= 100 items
agentFolders

Personal. Folders agents may be given besides the owner’s home. Never the system or the box’s own state.

Array<string>
default: <= 50 items
quietHours

Holds pushes back. The desktop and the phone read it for notifications. HH:MM, the box’s local time.

object
enabled
boolean
from
string
default: 22:00
to
string
default: 07:00
logRetentionDays

Stored only. The log is kept forever.

integer
default: 365 >= 1 <= 3650
updateChannel

Stored only. Nothing reads it yet.

string
default: stable
Allowed values: stable beta
autoUpdate

Stored only. Nothing reads it yet.

boolean
default: true
appearance
object
theme
string
default: system
Allowed values: light dark system
accent

A color like #5b8cff, or empty for the default.

string

Example

{
"approvalThresholdCents": 2000,
"networkDefault": "allowlist",
"defaultHosts": [
"example.com"
]
}

Every setting, after the change.

Media typeapplication/json
object
approvalThresholdCents

A single spend above this, in US cents, always asks for an OK, even inside the task’s budget.

integer
default: 500 <= 100000000
defaultBudgetCents

The budget of a task that names none. 0 means every spend asks.

integer
default: 100 <= 100000000
watchLimitCents

The most an Apple Watch token may approve. 0 means a Watch may only deny.

integer
default: 2500 <= 100000
paused

The kill switch. While true no task starts (new ones stay queued) and running ones hold before their next step, tool call or question. The box sets it itself at start when permissions.json cannot be read.

boolean
networkDefault

With allowlist, a task that names no hosts gets defaultHosts.

string
default: none
Allowed values: none allowlist
defaultHosts
Array<string>
default: <= 100 items
agentFolders

Personal. Folders agents may be given besides the owner’s home. Never the system or the box’s own state.

Array<string>
default: <= 50 items
quietHours

Holds pushes back. The desktop and the phone read it for notifications. HH:MM, the box’s local time.

object
enabled
boolean
from
string
default: 22:00
to
string
default: 07:00
logRetentionDays

Stored only. The log is kept forever.

integer
default: 365 >= 1 <= 3650
updateChannel

Stored only. Nothing reads it yet.

string
default: stable
Allowed values: stable beta
autoUpdate

Stored only. Nothing reads it yet.

boolean
default: true
appearance
object
theme
string
default: system
Allowed values: light dark system
accent

A color like #5b8cff, or empty for the default.

string

Example

{
"approvalThresholdCents": 500,
"defaultBudgetCents": 100,
"watchLimitCents": 2500,
"paused": false,
"networkDefault": "none",
"defaultHosts": [],
"agentFolders": [],
"quietHours": {
"enabled": false,
"from": "22:00",
"to": "07:00"
},
"logRetentionDays": 365,
"updateChannel": "stable",
"autoUpdate": true,
"appearance": {
"theme": "light"
}
}

An unknown setting or a bad value.

Media typeapplication/json
object
error
required

What went wrong

string

Example

{
"error": "settings.defaultBudgetCents: must be a whole number from 0 to 100000000"
}

The owner’s route, called by someone who is not the box’s own screen or a device paired as the owner.

Media typeapplication/json
object
error
required

What went wrong

string

Example

{
"error": "only this computer's own screen or the owner's paired device can do this"
}