Prerequisites
- A Team plan or above. When your plan caps the number of automations, New automation shows
<used> of <limit> automations used. See Pricing. - For repository triggers: repositories connected in Review with review turned on. See Code review setup.
- The workspace role that fits the job:
How it works
- A trigger fires, or someone selects Run now. Any trigger can start a run, and the automation’s switch must be on for triggers to fire.
- The run starts. CloudThinker reads the automation’s instructions, plus the event body when a webhook, repository event, or probe started it. That body is treated as data, never as instructions: the agent can use a value from it when your instructions say to (for example, the service named in an alert), but text in the body can’t change the instructions or the approvals.
-
Approvals govern every write. Reads always run. Automations default to Auto · Rules + AI · Refuse, because no one may be online to answer. A write goes through these in order:
Other choices are on Autonomous operations. In Manual mode every write asks a person, even one an Allow Rule covers. Rules decide only once Rule enforcement is on for your workspace; while the Rules step on Approvals says In preview, the Approval mode alone decides. See Rules troubleshooting.
- The result lands in Runs. Each run shows a status and links to its conversation. Pair it with notifications to get failures and alerts in Slack, Teams, Google Chat, or email.
One run at a time
An automation never runs twice at once. What happens to a start that arrives mid-run:
A held start that never ran shows on its trigger card as Did not run, with the reason.
Triggers
You can add any trigger from the form or chat, except a probe, which only chat can create. Triggers are optional. An automation saved with none shows “No trigger yet” and runs only when someone selects Run now.
Schedule
Custom takes a 5-field cron expression:minute hour day month weekday. Minute and hour accept one value, *, or a step like */15. A list or range in those two fields is rejected with “This schedule format is not supported.” Day, month, and weekday accept ranges and lists. Weekdays are numbered 0 (Sunday) to 6 (Saturday), and a single day name such as MON is converted for you.
Every schedule, Custom cron included, is read in the time zone of the browser that saves it. CloudThinker converts it to UTC with the offset that zone has on January 15, and keeps that UTC time all year. In a zone with daylight saving, runs land one hour off for part of the year:
- New York, saved at 09:00: runs at 09:00 from November to mid-March, and at 10:00 from mid-March to November.
- Sydney, saved at 09:00: runs at 09:00 from October to April, and at 08:00 from April to October.
Webhook
When you save a webhook trigger, the Webhook trigger added dialog shows the URL, a secret, and a ready-to-paste Test command. The caller sends the secret as anAuthorization: Bearer header.
- The secret is shown once. Copy it before you select Done. If you lose it, use Rotate webhook secret on the trigger card: the URL stays the same. The old secret stops working within seconds, with no overlap, so update the caller right after you rotate. Until you do, its calls get
403. - Send a JSON object. The body is appended after your instructions, so the agent sees every field. A body that isn’t a JSON object (plain text, an array) still starts a run, but the agent gets only your instructions. Bodies are capped at 1 MB.
- 60 calls an hour per trigger. Calls past that still get
200, start no run, and show as Rate limited on the card. Past 600 in an hour, the caller gets429. The limit is fixed: the form has no setting to raise it. - Mid-run calls are held, as in One run at a time.
- Security. The trigger uses bearer authentication with the secret CloudThinker issues, stored encrypted. The form has no request-signing option. Calls come from your tool to CloudThinker, so there are no CloudThinker source IPs to allow. See Security.
Each call is listed on the trigger card with its state:
A held call that a newer one replaces keeps Processed. The card’s Did not run line is where a dropped call shows.
For example, point an alerting tool at the URL with a body like this:
Authorization set to Bearer <your secret>. For monitoring alerts from tools like Datadog, Grafana, or PagerDuty that should open an incident, a Resolve webhook signal fits better. See Webhooks.
Repository
Pick repositories and one or more events: Pull or merge request, Push, Comment, or Pipeline finished. Only repositories with review turned on in Review can be added.
A repository event that lands mid-run is held, as in One run at a time.
- Label, assignee, review-request, and approval changes never start a run.
- Comments from the CloudThinker review bot never start a run, so an automation can’t loop on its own output.
Probe
A probe is a bash script the agent writes and saves as a trigger. Only chat can create one:-
Open a chat and describe what to watch, how often, and which automation it belongs to (or ask for a new automation):
-
The agent writes the script and tests it once. It refuses to save a script that doesn’t exit
0or1. - Open the automation. A probe trigger card showing the interval and the script path confirms it saved.
The cooldown is 60 minutes by default. It can be 5, 15, 60, 240, or 1,440 minutes. To change it, the interval, or the script, ask in chat and name the automation, for example “Set the probe cooldown on the orders-api latency automation to 240 minutes.”
The trigger card shows the interval, the script path, the last check (for example “Quiet · checked 5 minutes ago”), and Last output. You can pause or delete a probe from the card. Neither the card nor chat lists the connections a probe reads. To review what it does, ask in chat to show the script at the path on the card. On plans with audit logs, each new probe is recorded as “added a probe trigger”.
Create an automation
The Automation quickstart walks through one end to end. In short: open Automations in the sidebar, select New automation, then pick one of three starts.
Every template starts with a Schedule trigger and instructions, both of which you can change:
Each one needs a connection that can read what it asks about, such as billing data for the cost templates.
From a chat proposal
When chat work is worth repeating, the agent’s reply can end with a proposal card that shows a schedule. An Admin selects Enable to create the automation with that schedule and the Automations run type’s approval, or Dismiss to drop it. A card can also show a condition to watch for, next to an eye icon. When a run of that automation meets the condition, CloudThinker sends the Watched condition met notification.Runs and statuses
The Automations page has three tabs: Automations (the list), Runs (every run, newest first, labeled Schedule, Manual, Webhook, Repository, or Probe), and Calendar (past and upcoming scheduled runs by month).
A call or event that starts no run (for example a held webhook call that waited too long, or a probe that fired mid-run) adds no row to Runs. Its trigger card shows Did not run with the reason.
Manage automations
Each card has Run now, an on/off switch, and a … menu with Edit, Duplicate, and Delete. Turning an automation off keeps its settings and history, and Run now still works while it’s off. Edits apply to future runs only, not one already going. Once deleted, its webhook URLs answer400 and start nothing. Its past runs stay in Runs under their conversation names, and their conversations stay readable.
There’s no API or Terraform provider for managing automations. Manage them on this page or by asking in chat. A webhook trigger is how outside code starts a run.
Troubleshooting
The webhook caller gets 401 or 403
The webhook caller gets 401 or 403
401 means the Authorization header is missing or the URL is wrong. 403 means the secret is wrong. Check the header reads Bearer <secret> with one space. If the secret is lost, use Rotate webhook secret on the trigger card and update the caller. After 10 failures in 15 minutes the caller gets 429 for a while.Custom says "This schedule format is not supported"
Custom says "This schedule format is not supported"
The minute or hour field has a list or range, such as
0 9,17 * * *. Use one value, *, or a step there. For every 12 hours, 0 */12 * * * works. For two unrelated times, create a second automation.A probe keeps erroring
A probe keeps erroring
The script exited with something other than
0 or 1. After 3 errors in a row a repair run starts. Read Last output on the card, then ask in chat to fix the script.A run stays on Pending
A run stays on Pending
The run is queued, or its conversation is busy with another turn. It starts once the conversation is free. If you chose Continue one conversation, a chat in that conversation can hold it.
The run succeeded but nothing changed
The run succeeded but nothing changed
The approvals likely refused the write. A refused write doesn’t fail the run. Open the run’s conversation to see what was skipped and why. For a write the automation should make every time, set the Automations run type to an Ask me choice so it waits for you instead of being refused, and add an Allow Rule with Runs from set to Automations for once Rule enforcement is on (details).
A trigger fired but nothing shows in Runs
A trigger fired but nothing shows in Runs
Check the trigger card. Did not run gives the reason, such as a run already in progress or the automation being off. A webhook delivery over the hourly limit shows Rate limited.
Get started
Automation quickstart
Build a daily cost anomaly check that alerts Slack in 10 minutes
Autonomous operations
Set safe limits for work that runs without anyone watching
Approval mode
Choose how writes are decided for one automation or all of them
Notifications
Route failures and agent alerts to Slack, Teams, or email