Guides
Daily security check
This is the scheduled check pattern: every morning, an agent goes and looks at something, writes up what it found, and puts that in front of a person. Nobody has to remember, and the record of what was checked builds up on its own.
The example here checks a client's code repository for risky changes, because that's an example we can make concrete end to end. The shape is the same whichever thing you check: backups, patch compliance, unusual sign-ins, certificates about to expire. See pointing it at your own systems at the bottom.
One piece of advice before you build it. Run it manually for a week first. A daily check that produces noise gets ignored inside a fortnight, and once your team has learned to ignore it, the day it finds something real you won't notice either. Get the signal right, then put it on a schedule.
What you'll build
- A weekday schedule at 08:30.
- An agent step where Scout inspects and writes up what it found.
- A review step, so the service desk lead sees the finding and can leave notes.
Before you start
- GitHub connected, with access to
acme/api. - An agent named Scout (
agt_scout) whose toolkit grantsgithub.code.searchand read-only repository actions, and nothing else. - A Mobius user to receive the reviews.
Build it
- In the app, open Build > Loops.
- Create a loop named
Daily security check. - Add a Schedule trigger for weekdays at
08:30. - Add an agent step named
Inspect repository. - Give Scout instructions to search for risky patterns and return a short risk note.
- Add an interaction step named
Review finding. - Use
request_review,any_of, and aninputmode so the reviewer can leave notes. - Create the loop as active.
Your loop now produces one daily run and pauses when a human review is needed.
Finished spec
schema_version: "1"
name: daily-security-check
description: Search for risky code patterns and request review.
concurrency: skip
triggers:
- key: weekday-security-check
name: Weekday security check
kind: schedule
enabled: true
config:
cron: "30 8 * * MON-FRI"
timezone: "America/New_York"
steps:
- id: inspect
name: Inspect repository
kind: agent
config:
agent_id: agt_scout
tool_names:
- github.code.search
- github.file.get
instructions: |
Search acme/api for risky changes around authentication, API keys,
billing checks, and webhook verification. Return markdown with a
risk summary, evidence links, and a recommendation.
- id: review
name: Review finding
kind: interaction
config:
protocol: request_review
targets:
- usr_platform_lead
prompt: |
Review Scout's daily security note. Add follow-up instructions or
mark it clear.
resolution_policy: any_of
spec:
mode: input
multiline: true
placeholder: "Clear, or note the follow-up issue to open."
timeout:
duration: 8h
on_timeout: failRun it
Start a manual run once before relying on the schedule:
run.started
step.started step=inspect kind=agent
step.completed step=inspect
step.started step=review kind=interaction
interaction.requested step=review
run.suspendedAfter the reviewer responds:
interaction.responded
wait.resumed
step.completed step=review
run.completedThe output should include Scout's note and the review response:
{
"inspect": "No high-risk changes found. Watch webhook signature tests.",
"review": {
"value": "Clear. Open a follow-up if webhook fixtures drift again."
}
}If it gets noisy
It will, at first. Two fixes, in order:
Narrow what it looks at. A check across everything finds something every day, and most of it doesn't matter. One repository, or one risk area, produces a finding worth reading.
Tell it what "nothing to report" looks like. Agents are reluctant to say "all clear" unless you explicitly tell them that's an acceptable answer. Put that in the instructions and the noise drops sharply.
A check reviewers trust is worth ten checks they skim.
Variations
Only bother a person when something's wrong. Add a
check step
with on_fail: gate between the agent and the review. Clean days finish
silently; only findings open a request.
Post a digest instead. Swap the review step for slack.message.post when
the team wants visibility but not an approval queue.
Open a follow-up automatically. Add github.issue.create, or your own
ticket-creating action, after the review.
Give it a workspace. Use a managed environment when the check needs to download files and inspect them rather than just search.
Pointing it at your own systems
The pattern here has nothing to do with code. Swap the agent step's tools and you have:
- A backup check. Read last night's backup results, flag anything that failed or didn't run, write it up.
- A patch compliance check. Pull device patch status, flag machines that are behind, group by client.
- A certificate check. List certificates expiring in the next 30 days.
- A sign-in review. Look at unusual authentication activity and summarize what's worth a second look.
If the system holding that data has an API, build a custom HTTP action to read from it and give that action to Scout. If the data lands in a spreadsheet or a table instead, read it from there. Everything else in this guide stays exactly the same.
Next
- Grant tools through toolkits and skills.
- Pause for review with interactions.
- Keep long checks bounded with guardrails.
- Reach your own systems with actions.