intentic
Download the app
Download the app
Agents

The fleet

Every registered conversation, its accumulated diff, and landing or discarding its work

On this page(32 sections)

The roster rather than the turn. Each conversation works in its own private copy of the repos, so it has a cumulative set of changes you can read and two ways for it to end: merge that work into the shared tree, or throw it away. The rest is the bookkeeping a board needs — renaming, marking read, archiving, purging.

32 calls. Pick one to open it, or use the list on the right.

GET/agentsEvery live conversation

The fleet as the board draws it: each conversation with its title, what it is doing, when it last moved and whether anybody has read it since. Archived conversations are not in here.

What you send

Nothing. Call it as it is.

What comes back

FieldType
agentsThe conversationsobject[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
kind"agent"
idThe conversation that took them outstring
titleWhat that conversation is calledstring
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
revWhich version of the fleet this…number
heldAutomations waiting at the door for…object[]
idThis waiting item's own id, which…string
automationIdWhich automation it came fromstring
payloadWhat set it off, kept whole…string
originWhere the message came from, kept…object
automationIdstring
providerstring
channelIdstring
authorstring
titleWhat the conversation would be calledstring
conversationIdThe thread this belongs to, when…string
sessionIdThe provider session that thread last…string
threadWhich inbound thread this belongs to,…string
actsAsWhich persona the approved run speaks…string
createdAtWhen it started waiting, in millisecondsnumber
autoRunAtWhen it goes ahead on its…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.list();
GET/agents/archivedConversations put away

The same shape as the live fleet, for the conversations somebody has decided are finished. Their work is kept, and any one of them can be brought back.

What you send

Nothing. Call it as it is.

What comes back

FieldType
agentsThe conversationsobject[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
kind"agent"
idThe conversation that took them outstring
titleWhat that conversation is calledstring
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
revWhich version of the fleet this…number
heldAutomations waiting at the door for…object[]
idThis waiting item's own id, which…string
automationIdWhich automation it came fromstring
payloadWhat set it off, kept whole…string
originWhere the message came from, kept…object
automationIdstring
providerstring
channelIdstring
authorstring
titleWhat the conversation would be calledstring
conversationIdThe thread this belongs to, when…string
sessionIdThe provider session that thread last…string
threadWhich inbound thread this belongs to,…string
actsAsWhich persona the approved run speaks…string
createdAtWhen it started waiting, in millisecondsnumber
autoRunAtWhen it goes ahead on its…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents/archived" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.archived();
GET/agents/{id}One conversation's card

Everything the board shows for a single conversation: its title, state, working branch, unread marker and timestamps.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.get({
  "id": "a1b2c3d4"
});
GET/agents/{id}/transcriptOne page of a conversation

The most recent turns of one conversation, in order, including the tool calls and their results: what the chat replays and the next turn is seeded from. A page, not the whole record — pass the answer's `from` back as `before` to walk further back, until `more` reads false.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
beforeReturn the messages before this position…integerquery
turnsHow many of the user's turns…integerquery

What comes back

FieldType
messagesThe conversation, in orderobject[]
roleWho said it"user" | "assistant" | "notice"
textThe wordsstring
runThe run that produced this rowstring
sentAtWhen it was sent, in millisecondsnumber
messageIdThe message's own id, on the…string
attachmentsFiles attached to this message, as…string[]
checkpointIdThe saved point this message can…string
rewindIndexThis message's position in the conversation's…integer
thinkingWhat the agent was reasoning aboutstring
toolsThe tool calls this part of…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
pathThe file, as a workspace path,…string
lineWhich line, counting from onenumber
contentWhat it produced: text, a change…object[]
typePlain output"text"
textWhat the tool saidstring
childrenCalls a delegated subagent made, nested…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
contentWhat it produced: text, a change…object[]
childrenCalls a delegated subagent made, nested…object[]
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
idIts own id, where that is…string
kind"subagent" | "spawned"
agentTypestring
descriptionstring
modelstring
providerstring
backgroundboolean
status"pending" | "running" | "blocked" | "completed" … (7)
tokensnumber
toolUsesnumber
lastToolstring
summarystring
errorstring
verificationobject
todosThe agent's task checklist, as of…object[]
contentThe item, as the agent wrote…string
statusWhere it is"pending" | "in_progress" | "completed"
activeFormHow to phrase it while it…string
usageWhat the turn cost, on the…object
costUsdnumber
inputTokensnumber
outputTokensnumber
durationMsnumber
numTurnsnumber
notesWhat the sandbox added to this…object[]
titleThe one line a reader sees,…string
textThe note itself, which is also…string
speakerWho sent this message, as the…object
when kind is "person"shape
emailThe signed-in member, as the sandbox…string
nameTheir display name, where the sign-in…string
when kind is "program"shape
tokenThe label of the control token…string
when kind is "agent"shape
conversationIdThe conversation whose agent is speaking:…string
when kind is "sandbox"shape
sourceWhat in the sandbox spoke: an…string
errandWhat this message is for, when…"land-conflict" | "verify-nudge" | "land-breakage" | "land-fix" … (10)
placedA person wrote this in the…boolean
noticeActionA one-press follow-up this notice offers,…"landHold" | "depsInstall" | "watchStop" | "sandboxMemory" … (6)
sandboxHeldThe sandbox kept this refused turn…boolean
noticeWaitThe wait this notice describes, by…"credentialRenewal" | "chatRoute" | "watch"
noticeWaitIdWhich instance of the wait this…string
noticeCodeWhich of the sandbox's own notices…object
codeWhich of the sandbox's notices this…string
paramsThe facts the notice was worded…object
agentNoticeThis notice was said by the…object
levelHow loud it was said: a…"info" | "warning" | "error"
sourceWho said it, when the runtime…string
planThe plan this row asked approval…object
requestIdWhat to send back when you…string
textThe plan itselfstring
documentThe write-up this plan refers to,…object
pathWhere it lives, as a workspace…string
titleWhat it is called: its opening…string
markdownThe document itselfstring
truncatedIt was clipped at the wire…boolean
planIt is one of the CLI's…boolean
statusWhere the decision stands"pending" | "approved" | "rejected" | "cancelled"
questionThe questions this row asked, and…object
requestIdWhat to send back when you…string
questionsWhat it wants to knowobject[]
questionWhat the agent is askingstring
headerA short label for the questionstring
multiSelectWhether more than one answer can…boolean
optionsThe choices offeredobject[]
documentThe document this turn wrote and…object
pathWhere it lives, as a workspace…string
titleWhat it is called: its opening…string
markdownThe document itselfstring
truncatedIt was clipped at the wire…boolean
planIt is one of the CLI's…boolean
statusWhere the answer stands"pending" | "answered" | "cancelled"
answersWhat was chosen, keyed by the…object
attachmentsFiles the user attached to their…object
permissionThe tool this row asked permission…object
toolNameWhich tool it wants to usestring
titleThe whole question, as a sentence,…string
displayNameA short phrase for the button,…string
descriptionMore about what it is asking…string
reasonWhy it is asking at all:…string
pathWhich file it concerns, when it…string
alwaysLabelThe wording for an always-allow answerstring
alwaysAsksThis request asks every time: an…true
programThe program this request is holding,…object
textWhat would runstring
languageWhich of the two backends it…"bash" | "javascript"
truncatedWhether this is an excerpt of…boolean
spansWhich fragments of the text the…object[]
childThe subagent this request would start…object
providerWhich provider serves itstring
modelWhich of that provider's modelsstring
harnessWhich agentic loop runs it"native" | "claude-code"
accountWhich of that provider's connected accounts…string
effortHow hard it thinks, where the…string
thinkingWhether it reasons before it answers,…boolean
fastWhether it asks for the faster…boolean
moveWhat the parent asks to do:…"spawn" | "send" | "answer"
childThe child's id, for one that…string
taskWhat the child is for, in…string
messageWhat the parent would say to…string
onWhich machine it runs on, when…string
proposedWhat the agent asked to start…object
explainOne plain sentence saying what the…string
requestIdWhat to send back when you…string
statusWhere the decision stands"pending" | "allowed" | "always" | "everything" … (6)
browserHelpThe browser hand-over this row asked…object
requestIdstring
sessionstring
accountstring
messagestring
statusHow the hand-over ended"pending" | "helped" | "declined" | "cancelled"
terminalHelpThe terminal hand-over this row asked…object
requestIdstring
sessionstring
messagestring
statusHow the hand-over ended"pending" | "helped" | "declined" | "cancelled"
capabilityOfferThe capability setup this row asked…object
requestIdstring
offerobject
entryWhich catalog entry is being asked…string
nameWhat it is called, as the…string
whyThe agent's case for connecting it,…string
statusWhere the decision stands"pending" | "connecting" | "skipped" | "cancelled"
outcomeHow an accepted ask's setup ended…object
outcome"connected" | "unfinished"
idstring
paymentOfferThe payment this row asked for,…object
requestIdstring
offerobject
urlWhat is being paid forstring
descriptionWhat the endpoint says it isstring
payToWhere the money goes, taken verbatim…string
networkOn which networkstring
assetIn which tokenstring
assetNameThat token's namestring
amountUsdThe exact pricestring
spentTodayUsdWhat has already gone out todaystring
dailyCapUsdWhat may go out in a…string
whyThe agent's case for paying, and…string
statusWhere the decision stands"pending" | "approved" | "skipped" | "cancelled"
receiptHow the approved payment ended (the…object
outcome"paid" | "failed"
amountUsdstring
transactionstring
networkstring
watchWakeThe condition watch that woke this…object
outcomeHow the watch ended: the condition…"met" | "timeout" | "restart-expired" | "broken"
noteThe agent's own line on what…string
elapsedHow long the watch stood, already…string
sentThe whole prompt the model was…string
needSomething the agent asked a person…object
idThe need's handle, the one `needs…string
conversationIdThe conversation that asked, and the…string
subjectWhat exactly is asked forobject
kind"capability"
entryThe catalog entry, as the catalog…string
nameWhat the catalog calls it, never…string
modeConnect something new, give a connected…"connect" | "reconnect" | "change"
instanceThe connection a reconnect or a…string
targetThe site, host or address the…string
prefillSettings the agent could fill in…object
changesFor a change: each setting and…object
reasonThe daemon's own sentence on why…string
reportedThe agent reported the credential refused…boolean
titleThe one line it leads with,…string
whyThe agent's case for it, and…string
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
createdAtWhen it was raised, in millisecondsnumber
updatedAtWhen it last moved, in millisecondsnumber
answeredByWho answered it, as the sandbox…string
outcomeHow it ended, in the daemon's…string
toldHow the agent heard the outcome,…"call" | "turn" | "queued"
unattendedRaised by a turn nobody was…boolean
needWakeThe answered need that reached this…object
outcomeHow the need ended: a person…"met" | "declined"
titleThe need, as its card leads…string
idThe need's handle, which its live…string
sentThe whole prompt the model received,…string
agentWordsAnother agent's words that reached this…object
kindWho sent it: another conversation in…"peer" | "child"
fromThe sending conversation's idstring
titleThe sender's title, when it had…string
failedA child's report on a turn…boolean
sentThe whole prompt the model received,…string
backgroundJobThe background job this row marks…object
idThe daemon's handle for the job,…string
labelWhat the job is, in the…string
commandThe command as the agent wrote…string
startedAtWhen it started, in millisecondsnumber
credentialOfferThe gated credential this row asked…object
requestIdstring
offerobject
subjectWhich credential is being asked forstring
kindWhether this gate covers one stored…"secret" | "capability"
laneWhat the credential was about to…"shell" | "code" | "browser" | "session" … (5)
detailWhere it would go: the start…string
whyThe agent's case for using it,…string
approversWho may release itstring[]
scopeHow far one release goes: `use`…"use" | "conversation"
statusWhere the decision stands"pending" | "approved" | "skipped" | "cancelled"
receiptWho released it, or that somebody…object
outcome"released" | "refused"
approvedBystring
sessionIdThe provider session behind the last…string
providerWhich provider minted that sessionstring
harnessWhich runtime minted it: a session…"native" | "claude-code"
accountWhich stored account it belongs to,…string
endingHow the last turn ended, when…object
reasonWhich ending left the work here:…"limit" | "outage" | "stopped" | "flagged"
resetsAtWhen the spent allowance reopens, in…number
heldPresent when the daemon still holds…object
ranWhether the held turn got anywhere…boolean
contextTokensHow much context a press that…number
handoffTokensWhat a press that opens a…number
movingThe account the owner's policy is…string
scheduledWhether something other than the user…boolean
nextAtWhen the booked send actually fires,…number
retriesHow many automatic re-runs a stopped…object
madeAutomatic re-runs already sent for this…integer
maxHow many the ladder may send…integer
fromWhere the first message sits in…integer
moreWhether older messages precede this pageboolean
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/transcript" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.transcript({
  "id": "a1b2c3d4"
});
GET/agents/{id}/system-promptWhat this conversation is told before it is asked anything

The system prompt the most recent turn of this conversation actually ran on: which base it was, and every piece the sandbox added to it — this product's guidance, the persona, the field notes, the workspace's own standing rules — each with the exact words the model received. None of this appears in the transcript, so this is the only way to read it.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
promptWhat the most recent turn of…object
atWhen the turn that was told…number
runtimeWhich runtime served that turnstring
modeWhich base the turn was configured…"intentic" | "claude" | "custom"
baseobject
kindWhich prompt the additions ride on"intentic" | "claude" | "custom" | "runtime" … (5)
textThe base's own words, when they…string
modelThe model the turn ran on,…string
sectionsWhat the daemon added to that…object[]
sourceWhich mechanism added this"guidance" | "persona" | "field-notes" | "memory"
titleThe one line a reader sees…string
textThe section's exact words, as the…string
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/system-prompt" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.systemPrompt({
  "id": "a1b2c3d4"
});
GET/agents/{id}/transcript/tools/{toolId}One delegation's own calls

The calls a delegated agent made under one tool card. A transcript page leaves them behind and reports their count as `nested`, since a settled delegation draws collapsed; this is what fills the card in when it is opened. Empty when the record no longer holds that call.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
toolIdrequiredWhich tool call, by the id…stringaddress

What comes back

FieldType
childrenThe calls the delegated agent made,…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
pathThe file, as a workspace path,…string
lineWhich line, counting from onenumber
contentWhat it produced: text, a change…object[]
when type is "text"shape
textWhat the tool saidstring
when type is "diff"shape
pathWhich file, as a workspace pathstring
oldTextWhat was therestring
newTextWhat is there nowstring
truncatedOne of the two sides was…boolean
when type is "image"shape
pathWhere it is, as a workspace…string
childrenCalls a delegated subagent made, nested…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
pathThe file, as a workspace path,…string
lineWhich line, counting from onenumber
contentWhat it produced: text, a change…object[]
typePlain output"text"
textWhat the tool saidstring
childrenCalls a delegated subagent made, nested…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
contentWhat it produced: text, a change…object[]
childrenCalls a delegated subagent made, nested…object[]
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
idIts own id, where that is…string
kind"subagent" | "spawned"
agentTypestring
descriptionstring
modelstring
providerstring
backgroundboolean
status"pending" | "running" | "blocked" | "completed" … (7)
tokensnumber
toolUsesnumber
lastToolstring
summarystring
errorstring
verificationobject
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
idIts own id, where that is…string
kind"subagent" | "spawned"
agentTypestring
descriptionstring
modelstring
providerstring
backgroundboolean
status"pending" | "running" | "blocked" | "completed" … (7)
tokensnumber
toolUsesnumber
lastToolstring
summarystring
errorstring
verificationobject
stateWhether anything proved its work: a…"verified" | "unproven" | "failing" | "no-code"
pathsThe code files it changed, most…string[]
checkThe command that spoke: the one…string
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/transcript/tools/a1b2c3d4" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.toolChildren({
  "id": "a1b2c3d4",
  "toolId": "a1b2c3d4"
});
GET/agents/{id}/subagents/{subagentId}/transcriptOne in-process subagent's own record

What a subagent this conversation's runtime ran in-process said and did, as a transcript of its own: its ask, its thinking, its calls and its words. Read from the runtime's own record of the subagent where it keeps one, which it writes as the subagent works, else from the calls the delegation's card holds in this conversation's record. A subagent spawned as a conversation of its own is read through `transcript` instead.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
subagentIdrequiredWhich subagent this conversation's runtime ran…stringaddress

What comes back

FieldType
messagesThe conversation, in orderobject[]
roleWho said it"user" | "assistant" | "notice"
textThe wordsstring
runThe run that produced this rowstring
sentAtWhen it was sent, in millisecondsnumber
messageIdThe message's own id, on the…string
attachmentsFiles attached to this message, as…string[]
checkpointIdThe saved point this message can…string
rewindIndexThis message's position in the conversation's…integer
thinkingWhat the agent was reasoning aboutstring
toolsThe tool calls this part of…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
pathThe file, as a workspace path,…string
lineWhich line, counting from onenumber
contentWhat it produced: text, a change…object[]
typePlain output"text"
textWhat the tool saidstring
childrenCalls a delegated subagent made, nested…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
contentWhat it produced: text, a change…object[]
childrenCalls a delegated subagent made, nested…object[]
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
nestedHow many calls sit under this…integer
thinkingWhat the agent was reasoning about…string
subagentThe helper this call started, as…object
idIts own id, where that is…string
kind"subagent" | "spawned"
agentTypestring
descriptionstring
modelstring
providerstring
backgroundboolean
status"pending" | "running" | "blocked" | "completed" … (7)
tokensnumber
toolUsesnumber
lastToolstring
summarystring
errorstring
verificationobject
todosThe agent's task checklist, as of…object[]
contentThe item, as the agent wrote…string
statusWhere it is"pending" | "in_progress" | "completed"
activeFormHow to phrase it while it…string
usageWhat the turn cost, on the…object
costUsdnumber
inputTokensnumber
outputTokensnumber
durationMsnumber
numTurnsnumber
notesWhat the sandbox added to this…object[]
titleThe one line a reader sees,…string
textThe note itself, which is also…string
speakerWho sent this message, as the…object
when kind is "person"shape
emailThe signed-in member, as the sandbox…string
nameTheir display name, where the sign-in…string
when kind is "program"shape
tokenThe label of the control token…string
when kind is "agent"shape
conversationIdThe conversation whose agent is speaking:…string
when kind is "sandbox"shape
sourceWhat in the sandbox spoke: an…string
errandWhat this message is for, when…"land-conflict" | "verify-nudge" | "land-breakage" | "land-fix" … (10)
placedA person wrote this in the…boolean
noticeActionA one-press follow-up this notice offers,…"landHold" | "depsInstall" | "watchStop" | "sandboxMemory" … (6)
sandboxHeldThe sandbox kept this refused turn…boolean
noticeWaitThe wait this notice describes, by…"credentialRenewal" | "chatRoute" | "watch"
noticeWaitIdWhich instance of the wait this…string
noticeCodeWhich of the sandbox's own notices…object
codeWhich of the sandbox's notices this…string
paramsThe facts the notice was worded…object
agentNoticeThis notice was said by the…object
levelHow loud it was said: a…"info" | "warning" | "error"
sourceWho said it, when the runtime…string
planThe plan this row asked approval…object
requestIdWhat to send back when you…string
textThe plan itselfstring
documentThe write-up this plan refers to,…object
pathWhere it lives, as a workspace…string
titleWhat it is called: its opening…string
markdownThe document itselfstring
truncatedIt was clipped at the wire…boolean
planIt is one of the CLI's…boolean
statusWhere the decision stands"pending" | "approved" | "rejected" | "cancelled"
questionThe questions this row asked, and…object
requestIdWhat to send back when you…string
questionsWhat it wants to knowobject[]
questionWhat the agent is askingstring
headerA short label for the questionstring
multiSelectWhether more than one answer can…boolean
optionsThe choices offeredobject[]
documentThe document this turn wrote and…object
pathWhere it lives, as a workspace…string
titleWhat it is called: its opening…string
markdownThe document itselfstring
truncatedIt was clipped at the wire…boolean
planIt is one of the CLI's…boolean
statusWhere the answer stands"pending" | "answered" | "cancelled"
answersWhat was chosen, keyed by the…object
attachmentsFiles the user attached to their…object
permissionThe tool this row asked permission…object
toolNameWhich tool it wants to usestring
titleThe whole question, as a sentence,…string
displayNameA short phrase for the button,…string
descriptionMore about what it is asking…string
reasonWhy it is asking at all:…string
pathWhich file it concerns, when it…string
alwaysLabelThe wording for an always-allow answerstring
alwaysAsksThis request asks every time: an…true
programThe program this request is holding,…object
textWhat would runstring
languageWhich of the two backends it…"bash" | "javascript"
truncatedWhether this is an excerpt of…boolean
spansWhich fragments of the text the…object[]
childThe subagent this request would start…object
providerWhich provider serves itstring
modelWhich of that provider's modelsstring
harnessWhich agentic loop runs it"native" | "claude-code"
accountWhich of that provider's connected accounts…string
effortHow hard it thinks, where the…string
thinkingWhether it reasons before it answers,…boolean
fastWhether it asks for the faster…boolean
moveWhat the parent asks to do:…"spawn" | "send" | "answer"
childThe child's id, for one that…string
taskWhat the child is for, in…string
messageWhat the parent would say to…string
onWhich machine it runs on, when…string
proposedWhat the agent asked to start…object
explainOne plain sentence saying what the…string
requestIdWhat to send back when you…string
statusWhere the decision stands"pending" | "allowed" | "always" | "everything" … (6)
browserHelpThe browser hand-over this row asked…object
requestIdstring
sessionstring
accountstring
messagestring
statusHow the hand-over ended"pending" | "helped" | "declined" | "cancelled"
terminalHelpThe terminal hand-over this row asked…object
requestIdstring
sessionstring
messagestring
statusHow the hand-over ended"pending" | "helped" | "declined" | "cancelled"
capabilityOfferThe capability setup this row asked…object
requestIdstring
offerobject
entryWhich catalog entry is being asked…string
nameWhat it is called, as the…string
whyThe agent's case for connecting it,…string
statusWhere the decision stands"pending" | "connecting" | "skipped" | "cancelled"
outcomeHow an accepted ask's setup ended…object
outcome"connected" | "unfinished"
idstring
paymentOfferThe payment this row asked for,…object
requestIdstring
offerobject
urlWhat is being paid forstring
descriptionWhat the endpoint says it isstring
payToWhere the money goes, taken verbatim…string
networkOn which networkstring
assetIn which tokenstring
assetNameThat token's namestring
amountUsdThe exact pricestring
spentTodayUsdWhat has already gone out todaystring
dailyCapUsdWhat may go out in a…string
whyThe agent's case for paying, and…string
statusWhere the decision stands"pending" | "approved" | "skipped" | "cancelled"
receiptHow the approved payment ended (the…object
outcome"paid" | "failed"
amountUsdstring
transactionstring
networkstring
watchWakeThe condition watch that woke this…object
outcomeHow the watch ended: the condition…"met" | "timeout" | "restart-expired" | "broken"
noteThe agent's own line on what…string
elapsedHow long the watch stood, already…string
sentThe whole prompt the model was…string
needSomething the agent asked a person…object
idThe need's handle, the one `needs…string
conversationIdThe conversation that asked, and the…string
subjectWhat exactly is asked forobject
kind"capability"
entryThe catalog entry, as the catalog…string
nameWhat the catalog calls it, never…string
modeConnect something new, give a connected…"connect" | "reconnect" | "change"
instanceThe connection a reconnect or a…string
targetThe site, host or address the…string
prefillSettings the agent could fill in…object
changesFor a change: each setting and…object
reasonThe daemon's own sentence on why…string
reportedThe agent reported the credential refused…boolean
titleThe one line it leads with,…string
whyThe agent's case for it, and…string
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
createdAtWhen it was raised, in millisecondsnumber
updatedAtWhen it last moved, in millisecondsnumber
answeredByWho answered it, as the sandbox…string
outcomeHow it ended, in the daemon's…string
toldHow the agent heard the outcome,…"call" | "turn" | "queued"
unattendedRaised by a turn nobody was…boolean
needWakeThe answered need that reached this…object
outcomeHow the need ended: a person…"met" | "declined"
titleThe need, as its card leads…string
idThe need's handle, which its live…string
sentThe whole prompt the model received,…string
agentWordsAnother agent's words that reached this…object
kindWho sent it: another conversation in…"peer" | "child"
fromThe sending conversation's idstring
titleThe sender's title, when it had…string
failedA child's report on a turn…boolean
sentThe whole prompt the model received,…string
backgroundJobThe background job this row marks…object
idThe daemon's handle for the job,…string
labelWhat the job is, in the…string
commandThe command as the agent wrote…string
startedAtWhen it started, in millisecondsnumber
credentialOfferThe gated credential this row asked…object
requestIdstring
offerobject
subjectWhich credential is being asked forstring
kindWhether this gate covers one stored…"secret" | "capability"
laneWhat the credential was about to…"shell" | "code" | "browser" | "session" … (5)
detailWhere it would go: the start…string
whyThe agent's case for using it,…string
approversWho may release itstring[]
scopeHow far one release goes: `use`…"use" | "conversation"
statusWhere the decision stands"pending" | "approved" | "skipped" | "cancelled"
receiptWho released it, or that somebody…object
outcome"released" | "refused"
approvedBystring
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/subagents/a1b2c3d4/transcript" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.subagentTranscript({
  "id": "a1b2c3d4",
  "subagentId": "a1b2c3d4"
});
POST/agents/{id}/placePut words in the agent's mouth

Writes a line into the record as though the agent had said it, with no turn behind it and no reply. Human readers see it marked as placed. The next real turn starts fresh from the record, where the line reads as the agent's own. Refused while a turn is running.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
textrequiredThe words to put in the…stringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/place" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"text":"export const start = () => listen(PORT);\n"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.place({
  "id": "a1b2c3d4",
  "text": "export const start = () => listen(PORT);\n"
});
POST/agents/{id}/renameRetitle a conversation

Sets the title a person chose, replacing the one that was generated. Allowed while the conversation is working, and it does not count as activity.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
titlerequiredWhat to call it from now…stringbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/rename" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"title":"Update the changelog"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.rename({
  "id": "a1b2c3d4",
  "title": "Update the changelog"
});
POST/agents/{id}/auto-landWhether this conversation merges its work automatically

Overrides the sandbox-wide setting for one conversation; clear it to go back to following the default. Deliberately allowed mid-turn, because the setting is read when the turn finishes, so flipping it while the agent works means exactly hold this piece of work for review.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
autoLandrequiredWhether its work merges automatically when…booleanbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/auto-land" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"autoLand":true}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.autoLand({
  "id": "a1b2c3d4",
  "autoLand": true
});
POST/agents/{id}/break-policyWhat this conversation does when a turn stops before it finished

One answer per ending — a spent usage limit, a provider outage, a turn that stopped short — overriding the sandbox-wide policy for one conversation; clear it to follow the default again. The answers are mutually exclusive by construction, so nothing here can arm two automations over the same wall. Every ending starts at `wait` unless asked otherwise, because a re-run spends the user's own allowance on a turn they sent once.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
endingrequiredWhich wall this answers for: a…"limit" | "outage" | "stopped"body
policyrequiredWhat happens next for that ending"wait" | "resend" | "move" | "retry" | nullbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/break-policy" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"ending":"limit","policy":"wait"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.breakPolicy({
  "id": "a1b2c3d4",
  "ending": "limit",
  "policy": "wait"
});
POST/agents/{id}/keep-warmKeep this conversation's prompt cache warm while it sits idle

Re-reads the conversation's cached context shortly before the provider would drop it, until the time asked for, so picking it back up costs a cache read instead of re-sending everything. Each refresh is a forked, unsaved request that adds nothing to the conversation. Stops by itself when the time runs out, when a turn starts, when the account nears its limit, or when the prompt the next turn would send has changed. Refused for a conversation whose cache is already cold or that this sandbox cannot replay. Null stops it.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
untilrequiredKeep its prompt cache warm until…numberbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/keep-warm" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"until":1}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.keepWarm({
  "id": "a1b2c3d4",
  "until": 1
});
POST/agents/{id}/seenMark a conversation read

Stamps the read marker behind the unread badge on one card. Allowed while the conversation is working, and reading never counts as activity.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/seen" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.seen({
  "id": "a1b2c3d4"
});
POST/agents/{id}/unsentReport that a composer holds an unsent message for a conversation

The words stay in the browser; the sandbox only records since when some composer has held them, so a conversation waiting on a message nobody has sent yet is never archived for being idle. Null clears it once the message is sent or deleted. Does not count as activity.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
atrequiredWhen the composer started holding the…numberbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/unsent" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"at":1}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.unsent({
  "id": "a1b2c3d4",
  "at": 1
});
POST/agents/{id}/stop-watchingStop a conversation's condition watches

Disarms this conversation's outside-condition watches, so they will not wake it. Named without a watch id it disarms all of them, because that is what the press means when it is made about a card; a press made about one watch's own row names that watch and leaves the rest armed. Nothing else about the conversation changes.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
watchIdWhich watch to disarmstringbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/stop-watching" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"watchId":"a1b2c3d4"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.stopWatching({
  "id": "a1b2c3d4",
  "watchId": "a1b2c3d4"
});
POST/agents/{id}/stop-jobStop one of a conversation's background jobs

Ends a command this conversation left running: the server it handed over, or the build it is waiting on. The watch that would have woken the conversation on its exit is disarmed first, so stopping it wakes nothing. Stopping a job that already ended is not an error.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
jobIdrequiredWhich of its background jobs, by…stringbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/stop-job" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"jobId":"a1b2c3d4"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.stopJob({
  "id": "a1b2c3d4",
  "jobId": "a1b2c3d4"
});
POST/agents/seenMark every conversation read

Clears the unread badge across the whole fleet at once, and hands the refreshed list back.

What you send

Nothing. Call it as it is.

What comes back

FieldType
agentsThe conversationsobject[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
kind"agent"
idThe conversation that took them outstring
titleWhat that conversation is calledstring
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
revWhich version of the fleet this…number
heldAutomations waiting at the door for…object[]
idThis waiting item's own id, which…string
automationIdWhich automation it came fromstring
payloadWhat set it off, kept whole…string
originWhere the message came from, kept…object
automationIdstring
providerstring
channelIdstring
authorstring
titleWhat the conversation would be calledstring
conversationIdThe thread this belongs to, when…string
sessionIdThe provider session that thread last…string
threadWhich inbound thread this belongs to,…string
actsAsWhich persona the approved run speaks…string
createdAtWhen it started waiting, in millisecondsnumber
autoRunAtWhen it goes ahead on its…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/seen" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.seenAll();
GET/agents/{id}/diffEverything a conversation has changed

One flat set of changed files per repo, measured against where each repo stood when the conversation started, with every file flagged as already merged or not. Not the staged-and-unstaged shape a working copy has, because nobody ever checks this branch out to stage into it.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
reposOne entry per repository the conversation…object[]
repoWhich repositorystring
branchThe branch this conversation's work sits…string
changesWhat it changed thereobject[]
pathThe path, relative to the repository…string
statusWhat happened to it"added" | "modified" | "deleted" | "renamed" … (6)
fromWhere a renamed file came fromstring
additionsLines addednumber
deletionsLines removednumber
codeThe same +/− with every comment…object
additionsnumber
deletionsnumber
landedWhether your workspace already holds this…boolean
modulesThe packages of the tree these…object[]
dirWhere the package lives, relative to…string
nameThe name the package declares for…string
addedDependenciesDependencies the changed manifests here declare…object[]
pathThe manifest, relative to the repository…string
addedThe names it declares now and…string[]
absorbedHow many of this conversation's files…number
conflictsWhy the last merge refused, when…object[]
repoWhich repositorystring
pathsThe files that genuinely would not…object[]
pathWhich filestring
reasonWhy it would not merge, and…"workspace" | "diverged" | "binary"
cleanHow many files in this repository…number
mainBranchThe branch your own checkout is…string
elsewhereRepositories whose copy the conversation left…object[]
repoWhich repositorystring
branchThe branch its copy is standing…string
carriedWhether everything the conversation committed there…boolean
uncommittedWhether its copy there holds uncommitted…boolean
scratchUntracked files the conversation left in…object[]
repoWhich repositorystring
pathsWhat it keeps out thereobject[]
pathRelative to its repositorystring
reasonWhy it looks like scratch"hidden" | "byproduct" | "checkout" | "oversized" … (5)
filesHow many files it holdsnumber
bytesTheir total size in bytesnumber
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/diff" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.diff({
  "id": "a1b2c3d4"
});
GET/agents/{id}/conflictsWhy a conversation's last merge refused

What still blocks the conversation's last refused merge, checked again against your workspace as it stands now. Returns the same `conflicts` the full change list carries, without the change list itself. Empty when nothing refused, or when what refused before has since stopped being in the way.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
conflictsWhy the last merge refused, when…object[]
repoWhich repositorystring
pathsThe files that genuinely would not…object[]
pathWhich filestring
reasonWhy it would not merge, and…"workspace" | "diverged" | "binary"
cleanHow many files in this repository…number
mainBranchThe branch your own checkout is…string
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/conflicts" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.conflicts({
  "id": "a1b2c3d4"
});
GET/agents/{id}/historyWhere a conversation's committed work lives

The commits in your own history that carry this conversation's work, with the files each one brought. Use it when the change list is empty or short because you already committed what it wrote: those files are not differences against the main line any more, so they are not in the review, and this is where they went.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
reposOne entry per repository holding committed…object[]
repoWhich repositorystring
commitsThe commits carrying this conversation's work…object[]
shaThe commitstring
shortIts abbreviated hash, which is what…string
subjectIts first linestring
authorWho committed itstring
atWhen it was authored, in millisecondsnumber
changesThe conversation's files that this commit…object[]
pathThe path, relative to the repository…string
statusWhat happened to it"added" | "modified" | "deleted" | "renamed" … (6)
fromWhere a renamed file came fromstring
additionsLines addednumber
deletionsLines removednumber
codeThe same +/− with every comment…object
modulesThe packages of the tree these…object[]
dirWhere the package lives, relative to…string
nameThe name the package declares for…string
unaccountedHow many of the conversation's absorbed…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/history" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.history({
  "id": "a1b2c3d4"
});
GET/agents/{id}/{repo}/file-diffOne file's before and after in a conversation's work

Both sides of a single file: what it held when the conversation started and what it holds on its branch now.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
reporequiredWhich repositorystringaddress
pathrequiredWhich file, relative to that repositorystringquery

What comes back

FieldType
beforeThe whole file as it wasstring
afterThe whole file as it is…string
binaryThe file is not text, so…boolean
partialSet when the file was too…object
beforeBytesHow big the before side is,…integer
afterBytesHow big the after side is,…integer
patchThe changed regions as unified-diff hunks…string
moreThere were more changed regions than…boolean
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/root/file-diff?path=src%2Fapp.ts" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.fileDiff({
  "id": "a1b2c3d4",
  "repo": "root",
  "path": "src/app.ts"
});
POST/agents/{id}/scratch/includeCarry files set aside as scratch with a conversation's work

Takes files the review lists as scratch and adds them to the conversation's work, so the next merge carries them like any other file. For the file that only looked like scratch. Refused for a checkout of its own, which no merge can carry, while a turn is running, and for a path that is not scratch right now.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
reporequiredWhich repository of its compositionstringbody
pathsrequiredPaths exactly as the review lists…string[]body

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/scratch/include" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"repo":"root","paths":["src/app.ts","README.md"]}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.includeScratch({
  "id": "a1b2c3d4",
  "repo": "root",
  "paths": [
    "src/app.ts",
    "README.md"
  ]
});
POST/agents/{id}/scratch/deleteDelete a conversation's scratch

Removes files the review lists as scratch from the conversation's copy. Nothing else is touched, and nothing of it was ever merged. Refused while a turn is running, and for a path that is not scratch right now.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
reporequiredWhich repository of its compositionstringbody
pathsrequiredPaths exactly as the review lists…string[]body

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/scratch/delete" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"repo":"root","paths":["src/app.ts","README.md"]}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.deleteScratch({
  "id": "a1b2c3d4",
  "repo": "root",
  "paths": [
    "src/app.ts",
    "README.md"
  ]
});
POST/agents/{id}/landMerge a conversation's work into the workspace

Brings the conversation's branches into the main tree, one repo at a time. A conflict is reported rather than raised and nothing is lost when it fails. Refused while a turn is running, and refused for a conversation that works directly in the shared tree, which has nothing to merge.

What you send

FieldTypeWhere
idrequiredWhich conversation's work to mergestringaddress
modeHow to apply it"check" | "merge" | "measure"body
spanHow much of the work to…"cumulative" | "outstanding"body
forceGo ahead despite a check that…booleanbody

What comes back

FieldType
landedWhether the entire composed change was…boolean
changedWhether anything actually movedboolean
conflictsWhat stopped the whole composed change,…object[]
repoWhich repositorystring
pathsThe files that genuinely would not…object[]
pathWhich filestring
reasonWhy it would not merge, and…"workspace" | "diverged" | "binary"
cleanHow many files in this repository…number
mainBranchThe branch your own checkout is…string
resolvingFiles left half-merged when you asked…object[]
repoWhich repositorystring
pathsWhich files now hold conflict markers…string[]
heldNothing was applied and nothing failed:…boolean
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/land" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"mode":"check","span":"cumulative","force":false}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.land({
  "id": "a1b2c3d4",
  "mode": "check",
  "span": "cumulative",
  "force": false
});
POST/agents/{id}/request-landAsk a maintainer to merge this work

For a collaborator who is not allowed to merge: marks the conversation as waiting for review, with who asked. The request shows on every maintainer's board and clears when somebody merges or discards it.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/request-land" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.requestLand({
  "id": "a1b2c3d4"
});
POST/agents/{id}/assignMake a member answerable for this conversation

Hands a conversation to a member: its owner is who answers its questions and who a reviewer asks about its work. Its owner may hand it to anyone; a maintainer may reassign any conversation; one nobody owns may be claimed by anyone allowed to drive agents. Refused for an address that is not a member's. Nothing about the conversation's own work changes.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
torequiredWho should answer for it from…stringbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/assign" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"to":"src/server.ts"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.assign({
  "id": "a1b2c3d4",
  "to": "src/server.ts"
});
POST/agents/{id}/reactMark a conversation with an emoji

Puts your mark on a conversation, or takes it back. Everyone sharing the sandbox sees it, with who left it, which is what makes it worth more than a private bookmark. One mark per person per emoji; nothing about the conversation's own work changes.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
emojirequiredThe mark to leave, as the…stringbody
onrequiredWhether to add your mark or…booleanbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
when kind is "agent"shape
idThe conversation that took them outstring
titleWhat that conversation is calledstring
when kind is "person"shape
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/react" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"emoji":"…","on":true}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.react({
  "id": "a1b2c3d4",
  "emoji": "…",
  "on": true
});
POST/agents/{id}/discardThrow a conversation's work away

Deletes the conversation's working copies, its branches and its entry. Nothing is kept. Refused while a turn is running, and refused for a conversation working in the shared tree.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

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

const result = await sandbox.agents.discard({
  "id": "a1b2c3d4"
});
POST/agents/archivePut conversations away

The gentle counterpart to discarding. Commits whatever the conversation still has in progress onto its own branch, releases its working copy, and keeps the entry and the record. Its scratch is not committed and goes with the copy. It leaves the live fleet and joins the archive. Refused for a conversation that is running.

What you send

FieldTypeWhere
idsrequiredWhich conversationsstring[]body

What comes back

FieldType
movedWhat actually moved, whole, rather than…object[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
kind"agent"
idThe conversation that took them outstring
titleWhat that conversation is calledstring
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
revThe version of the fleet that…number
failedThe conversations this press could not…object[]
idWhich conversation stayed on the boardstring
reasonWhy its working copy could not…string
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/archive" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"ids":["a1b2c3d4","e5f6a7b8"]}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.archive({
  "ids": [
    "a1b2c3d4",
    "e5f6a7b8"
  ]
});
POST/agents/unarchiveBring conversations back

Returns archived conversations to the live fleet. The next turn picks up a fresh working copy from the branch that was kept.

What you send

FieldTypeWhere
idsrequiredWhich conversationsstring[]body

What comes back

FieldType
movedWhat actually moved, whole, rather than…object[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
titleActionOne word for the kind of…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (13)
failureWhy the last turn failed, in…string
failureCodeWhich kind of failure it was,…string
limitResetsAtWhen the spent allowance reopens, in…number
limitHeldWhether the refused turn is held…boolean
limitScheduledWhether the held turn is already…boolean
limitMovingThe account the held turn is…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
runnerThe runner this conversation runs onstring
startInWhich folder it opened in, relative…string
actsAsWhich persona its first turn acted…string
lastActsAsWhich persona its last turn acted…string
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
limitPolicy"wait" | "resend" | "move"
outagePolicy"wait" | "retry"
stopPolicy"wait" | "retry"
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
reactionsWhat people have marked this conversation…object[]
emojiThe mark itself, one emoji, carried…string
byEveryone wearing this mark, oldest first,…object[]
emailWho it was, as the sandbox…string
nameWhat to call them, when their…string
atWhen they marked it, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
startedByWho asked for the first turn,…string
areasWhich named areas of the workspace…string[]
ownerThe member answerable for this conversation:…object
emailWho answers for this conversation, as…string
nameWhat to call them, when the…string
sinceWhen they became its owner, in…number
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensUncached input tokens, excluding cache reads…number
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
promptCacheWhen this conversation's prompt cache was…object
atWhen its last request touched the…number
ttlMsHow long that entry lives from…number
rollsAtWhen the date written into the…number
keepableUntilPresent when this sandbox can keep…number
keepWarmWhether the sandbox is keeping this…object
sinceWhen keeping it warm started, in…number
untilWhen it stops by itself, in…number
refreshesRefreshes sent so farinteger
readTokensHow much the last refresh read…number
endedWhy keeping it warm stopped before…object
atWhen it stopped, in millisecondsnumber
reasonWhy: `elapsed` the time asked for…"elapsed" | "allowance" | "changed" | "cold" … (5)
detailThe specifics, when there are any:…string
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
checklistHow far it is through its…object
doneItems it has completednumber
totalItems on the listnumber
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
testNoteWhy a test this change weakened…string
allowsExceptions the conversation declared for this…string[]
startedAtWhen the running turn started, in…number
runThe run under way right now:…string
queueMessages waiting for its next turn,…object
itemsWhat waits, in the order it…object[]
idThe message's id: what its sender…string
textThe words, as they will go…string
attachmentsFiles that go with it, as…string[]
voiceWho it is from: a person,…"person" | "sandbox" | "agent"
queuedAtWhen it joined the queue, in…number
revisionThe queue's revision when this message…integer
revisionMoves with every change to the…integer
pausedWhy nothing goes out by itself:…"stopped" | "refused" | "scheduled"
untilWhen scheduled messages go out by…number
afterThe conversation whose finished work must…string
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
unsentAtSince when somebody's composer has held…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
capabilityIt needs something connected that is…boolean
credentialIt is waiting for a named…boolean
conflictIts work cannot be merged without…boolean
needIt asked a person for something…boolean
permissionAskThe oldest permission its running turn…object
requestIdWhich request this is: the id…string
askWhat it asks to do, on…string
landFailureThe last attempt to bring its…object
reasonWhy it failed, in the words…string
codeWhich kind of failure it was,…string
atWhen it failed, in millisecondsnumber
deliveryWhat became of its last land…object
state"delivered" | "partial" | "waiting" | "failed" … (5)
atWhen this state was reached, in…number
projectstring
folderThe folder on the owner's computer,…string
appliedFiles written, merged ones includedinteger
conflictsobject[]
pathstring
reason"edited" | "link" | "outside" | "missing-git"
pointThe machine's restore point taken before…string
reasonWhy it failed or waits, in…string
conflictCausesWhy its work will not merge,…"workspace" | "diverged" | "binary"[]
unfinishedWhat its last turn left open:…object
atWhen the turn that left this…number
stepsThe agent's own checklist where that…object
openItems on it that were never…number
totalItems on the whole listnumber
nextThe one it would have done…string
checkThe end-of-turn check that was still…string
proofWhat its last turn showed of…object
atWhen the turn that left this…number
verificationVerified: a check it ran passed…"verified" | "unproven" | "failing" | "no-code"
checkThe command that spoke, when one…string
unviewedHow many rendered files it changed…number
reachWhere its last turn's work went…object
atWhen the turn that left this…number
liveFiles it changed in place where…object[]
pathWhat it wrote, as it named…string
extensionThe extension, by its manifest id,…string
liveMoreHow many more such files there…number
strandedRepositories it cloned inside its own…object[]
dirThe clone, as a folder relative…string
uncommittedFiles changed in it and never…number
unpushedCommits in it its upstream does…number
strandedMoreHow many more such clones there…number
publishedPushes it made with git that…object[]
dirThe folder it pushed from, as…string
remoteThe remote it pushed to, as…string
branchThe branch it pushed to, as…string
commandThe push itself, trimmed to one…string
publishedMoreHow many more such pushes there…number
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsSubagents this one started, in-process and…object
runningSubagents working right nownumber
totalSubagents it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
removedByWho took them out, when the…object
kind"agent"
idThe conversation that took them outstring
titleWhat that conversation is calledstring
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (8)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
awaitingWakeWhether this conversation runs again by…boolean
watchesOutside conditions this conversation is parked…object[]
idThe daemon's handle for this watch,…string
noteThe agent's own line on what…string
intervalSecondsHow often the check runsinteger
deadlineAtWhen it gives up and wakes…number
needsWhat it is waiting on people…object[]
idstring
kindWhat is being asked for: a…"capability" | "secret" | "grant" | "release" … (5)
titlestring
statusWhere it stands: open (waiting on…"open" | "working" | "met" | "declined" … (5)
jobsCommands this conversation left running in…object[]
idThe daemon's handle for this job,…string
labelWhat the job is, in the…string
sessionThe terminal session its pane runs…string
startedAtWhen it started, in millisecondsnumber
endedAtWhen the command exited, in millisecondsnumber
exitCodeThe code it exited withinteger
watchThe watch its exit wakes this…string
handedLeft running for the person: the…boolean
portsThe ports it was listening on…integer[]
stoppedByWho stopped it: the sandbox, when…"turn" | "person" | "agent"
inputWaitPresent while it sits blocked reading…object
sinceWhen it went still, in millisecondsnumber
programThe process blocked reading the terminal,…string
archivedAtWhen it was put away, in…number
revThe version of the fleet that…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/unarchive" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"ids":["a1b2c3d4","e5f6a7b8"]}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.unarchive({
  "ids": [
    "a1b2c3d4",
    "e5f6a7b8"
  ]
});
POST/agents/purgeEmpty the archive for good

Discards every conversation already in the archive: working copies, branches and entries. The whole archive rather than a chosen few, because the archive is the pile somebody has already decided is over. A teardown that fails on one conversation leaves that one behind instead of taking the rest down with it.

What you send

Nothing. Call it as it is.

What comes back

FieldType
removedWhich conversations were deleted, as idsstring[]
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/purge" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.purge();

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