Popular starting points. Use Tab or arrow keys to browse results.

Skip to content
Aten SecurityThoth docs

Profiles and action classes

The action classes, the safe-default rules, the agent profiles and the action_class rule condition.

Action classes

A declaration says what a tool does. Decisions use only declarations confirmed on the server, never a request body, a model or a proposal.

ClassMeaning
readReads data
writeWrites or changes data
deleteDeletes data
executeRuns code or commands
exportExports data
external_callCalls a system outside yours
bulk_operationActs on many records at once
credential_accessAccesses keys, tokens or secrets
sensitive_data_accessAccesses sensitive data
unknownNo confirmed declaration

A tool with several classes gets the most restrictive outcome among them.

safe-default (version 1.0.0)

RuleWhenDecision
Protect sensitive data from leavingsensitive_data_access with export or external_callBLOCK
Allow reading datareadALLOW
Allow sensitive data inside your systemsensitive_data_accessALLOW
Allow writing datawriteALLOW
Review running codeexecuteSTEP_UP
Review deleting datadeleteSTEP_UP
Review bulk changesbulk_operationSTEP_UP
Review exporting dataexportSTEP_UP
Review internet callsexternal_callSTEP_UP
Review accessing credentialscredential_accessSTEP_UP
Confirm this tool firstunknownSTEP_UP

Blocklists, quarantine, quotas and other hard constraints still apply first.

Agent profiles

Each profile is safe-default plus named rules. Named rules apply to confirmed tools with the exact tool names below; an unconfirmed tool steps up before any named rule runs.

coding-agent

RuleToolsDecision
Code stays on approved remotesgit_push, git.push with a remote URL whose host is not in approved_remote_hostsBLOCK
Named remotes need an approvergit_push, git.push with a remote name, such as origin, rather than a URLSTEP_UP
Production releases need an approverdeploy_release, deploy.release with environment production or prod (the default)STEP_UP
Secrets files stay privateread_file, read.file with a path named .env, .env.*, credentials, secrets.json, secrets.yaml, id_rsa or id_ed25519BLOCK

finance-operations

RuleToolsDecision
Vendor bank details never change through the agentupdate_vendor_bank_details, vendor.update_bank_detailsBLOCK
Large payments need the controllerpay_invoice, initiate_transaction, payment.transfer with amount_usd at or above payment_approval_amount_usdSTEP_UP
New payees need an approvercreate_payee, payee.createSTEP_UP

customer-support

RuleToolsDecision
Large refunds need an approverissue_refund, refund.issue with amount_usd at or above refund_approval_amount_usdSTEP_UP
Customer personal data stays insidesensitive_data_access with export or external_callBLOCK
Account deletion needs an approverdelete_account, account.deleteSTEP_UP

A missing, non-numeric or non-finite amount_usd always needs an approver.

Parameters

ParameterDefaultProfile
payment_approval_amount_usd10000finance-operations
refund_approval_amount_usd5000customer-support
approved_remote_hostsnone: every push needs a matchcoding-agent

Parameters are available on paid plans, through profile_parameters_json in thoth_pack_assignment. Amounts must be positive. Hosts are exact host names, without wildcards or paths.

Selection and versions

  • Trial: one profile for the workspace, chosen at signup or once later. Parameters are not available.
  • Paid: a profile per agent, with parameters.
  • Versions are pinned per agent. Moving to another version or profile needs an admin with recent MFA, or a Terraform change to profile_version.
  • Removing a profile returns the agent to safe-default.

The action_class condition

Custom rules can match the server classification:

action_class == delete
action_class in [delete, external_call]

unknown is a matchable value. The condition reads confirmed declarations only.

On this page