intentic
Create your workspace
Connected systems

Secrets

Stored values the agent can use without ever reading them

On this page(5 sections)

Write a secret, list which names exist, delete one. Revealing a value is the deliberate exception and the only route that hands one back; everywhere else the daemon substitutes a secret by reference at the moment a command runs.

POST/secretsStore a secret

Writes one name and value into the sandbox's own store, where running processes pick it up without a restart. Refused until the sandbox has somewhere to keep them.

What you send

FieldTypeWhere
keyrequiredThe name to store it under,…stringbody
valuerequiredThe valuestringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/secrets" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"key":"OPENAI_API_KEY","value":"…"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.secrets.set({
  "key": "OPENAI_API_KEY",
  "value": ""
});
GET/secretsNames of the stored secrets

Which secrets exist here. Names only, never values.

What you send

Nothing. Call it as it is.

What comes back

FieldType
keysThe names that exist herestring[]
Try itanswered in this tab
curl
curl "$SANDBOX/secrets" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.secrets.list();
DELETE/secrets/{key}Delete a secret

Removes one by name.

What you send

FieldTypeWhere
keyrequiredWhich secret, by namestringaddress

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X DELETE "$SANDBOX/secrets/OPENAI_API_KEY" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.secrets.remove({
  "key": "OPENAI_API_KEY"
});
GET/secrets/inventoryEvery secret this sandbox holds, from everywhere

One view across all the places secrets live here: what exists, where it came from and whether it is working. Never any values. This one always answers, even before there is a store to write to.

What you send

Nothing. Call it as it is.

What comes back

FieldType
entriesOne entry per secret this sandbox…object[]
keyWhat identifies itstring
kindWhere it came from: you set…"env" | "generated" | "capability" | "provider"
labelA friendlier name, for entries that…string
statusWhether it exists and, for a…"missing" | "set" | "connected"
requiredByWhat is waiting on itobject[]
resourceIdWhich resourcestring
typeWhat kind of resource it isstring
storedAtWhere it actually lives, in wordsstring
revealableWhether its value can be shown…boolean
ciWhether a copy has been given…object
syncedWhether the pipeline has itboolean
pushedAtWhen it was last sent therestring
lastUseThe last time an agent actually…object
atWhen, in millisecondsnumber
laneHow it was used: a command,…"shell" | "code" | "browser"
detailWhere it went: the start of…string
Try itanswered in this tab
curl
curl "$SANDBOX/secrets/inventory" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.secrets.inventory();
POST/secrets/revealShow one secret's value

The only call that hands a value back, and it is for the owner alone. Sent as a body rather than in the address, so the name never ends up in a log or a browser's history.

What you send

FieldTypeWhere
keyrequiredWhich secret, by namestringbody

What comes back

FieldType
valueThe value itselfstring
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/secrets/reveal" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"key":"OPENAI_API_KEY"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.secrets.reveal({
  "key": "OPENAI_API_KEY"
});
More in Connected systems

Type to search every page, in the docs and the API reference.