Running the same job every week and want it to come out identical each time — same shape, same numbers, same format? Capture the procedure as a custom skill and point the agent at it. The skill freezes the exact steps so the output stops drifting run to run.
Triggered vs scheduled agents
How it works
1
Schedule fires
At the configured cadence (e.g., daily at 6 AM), the agent starts a new execution.
2
Agent reads instructions
The agent loads your custom instructions, enabled tools, and any loaded skills. There is no ticket to analyze — your instructions define the task.
3
Agent uses tools
The agent executes the task: querying M365 environments, searching documentation, running RMM scripts, or any other enabled tool.
4
Results and approvals
The agent can request technician approval (TIL) before sensitive actions, send notifications via Teams or email, and create tickets for issues it finds.
If the agent requests Technician-in-the-Loop approval or kicks off an RMM script, the execution pauses until the technician responds or the script completes. The agent then resumes with full context of what it was doing.
Setting up a scheduled agent
1
Create a new agent
Go to Workflows → Create and select Agent.
2
Set the trigger to Scheduled
Under Trigger, select Scheduled and configure your cadence (e.g., daily at 6:00 AM, weekly on Mondays).
3
There is no ticket filter to set
A scheduled agent has no Filters tab. Nothing is missing: a filter narrows the tickets that start a run, and a scheduled run starts from the clock instead. The agent chooses what to work on while it runs — see Choosing which companies a run covers.
4
Enable tools
Select the tools the agent needs. For M365 tasks, the relevant Microsoft 365 tools are auto-enabled based on your integration’s permission groups. This agent bills per tool call — check Tool credit costs before you enable write access or External API Request.Other commonly used tools for scheduled agents:
- Search tools — Find Documentation, Find Tickets by Content/Metadata
- Communication tools — Send Teams Message, Send Email
- Management tools — Create New Ticket, Trigger or Schedule Workflow
- Resolution tools — Execute RMM Script
5
Write custom instructions
This is the most important step. Your custom instructions define exactly what the agent does each run. Be specific about:
- What to check or audit
- How the agent picks the companies to work on — see Choosing which companies a run covers
- What thresholds or criteria to act on
- What action to take when issues are found
- How to report results
6
Configure safety controls
- Test mode: Start with test mode on. The agent will log what it would do without taking real actions.
- Technician-in-the-Loop: Enable TIL on your M365 permission groups for any write operations. The agent will pause and request approval before making changes.
- Access profiles: Use the Helpdesk or IT Admin preset to ensure TIL is required on sensitive operations.
7
Set the schedule and enable
Configure your schedule cadence, set execution windows if needed (e.g., only during business hours), and enable the workflow.
Choosing which companies a run covers
You say it in the custom instructions. That is the whole answer, and it is where the scope belongs. There is no Filters tab for a scheduled agent and you do not need one — a filter narrows the tickets that start a run, and a scheduled run starts from the clock instead. The agent finds its own companies and works through them.Write the rule, not the list
The instruction can name a company outright:Leave the method to the agent
You do not have to say how the work gets done, and you are better off not trying. Every agent has a sandbox — it is on by default, with nothing to enable — and Neo tells the agent when to use it. For a report across many companies, the agent writes a script. That script pulls each company’s data at once rather than one company at a time, and where the report needs written analysis it produces that inside the same script. A few hundred companies is an ordinary size for this. You do not need to break the job up on the agent’s behalf. A second shape exists for a different kind of work: when each company needs its own decisions and actions in your systems, rather than a section in a report, the agent can run parallel subagents. That one is capped at 50 companies per run, so it is worth knowing which kind of job you are describing. Reporting is almost never the second kind. A scheduled agent bills per tool call, so a wider scope costs more. Watch the spend on Billing for the first few runs rather than estimating it. The rule tells the agent which companies to report on. It is not a permission boundary — the agent can still read any company your integration reaches. Grant Read Only unless the agent has to write, and require Technician-in-the-Loop on anything that does.Get it working, then freeze it
Ask Neo Support to run the agent for you and read the real output before the schedule fires, instead of waiting a month to see what it produced. Once a run comes out right, save the procedure as a custom skill. Later runs load the skill rather than rebuilding the approach, so the output stops changing between runs.Use cases
Scan for new admin accounts
Scan for new admin accounts
Goal: Detect unauthorized admin role assignments across M365 tenants daily.Tools: Microsoft 365 (Directory Roles, Audit & Reports)Custom instructions example:
Disable inactive M365 accounts
Disable inactive M365 accounts
Goal: Find and disable accounts with no sign-in activity for 90+ days.Tools: Microsoft 365 (User Management, Audit & Reports)Custom instructions example:
Rotate admin and service account passwords
Rotate admin and service account passwords
Goal: Monthly password rotation for privileged accounts.Tools: Microsoft 365 (Security, Directory Roles), Generate PasswordCustom instructions example:
Weekly documentation audit
Weekly documentation audit
Goal: Identify outdated KB articles based on recent ticket trends.Tools: Find Documentation, Find Tickets by Content, Send Teams MessageCustom instructions example:
Stale ticket report
Stale ticket report
Goal: Weekly summary of tickets that haven’t been updated in 7+ days.Tools: Find Tickets by Metadata, Send Teams MessageCustom instructions example:
Coming soon: Audit enterprise applications (app registrations and service principals). This capability is on the roadmap and will unlock additional scheduled agent use cases.
Best practices
Start with test mode
Start with test mode
Enable test mode for your first few runs. Review the agent’s execution log in Executions to verify it’s doing what you expect before enabling real actions.
Enable Technician-in-the-Loop for writes
Enable Technician-in-the-Loop for writes
Any agent that modifies accounts, resets passwords, or disables users should require TIL approval. Use the Helpdesk or IT Admin access profile on your M365 integration to enforce this.
Be specific in custom instructions
Be specific in custom instructions
Scheduled agents have no ticket to provide context — your custom instructions are the entire task definition. Include: what to check, how to select the companies, what thresholds trigger action, and how to report results.
Pick the right cadence
Pick the right cadence
Match the schedule to the urgency of the task. Security audits might run daily, password rotations monthly, documentation reviews weekly. Avoid running more frequently than needed.
State the scope as a rule, not a list of names
State the scope as a rule, not a list of names
The custom instructions are where you say which companies a run covers. For a set, write the rule — “every client whose Monthly Reporting field is Yes” — and let the agent read that list from your PSA each run. A pasted list of names has to be maintained by hand. See Choosing which companies a run covers.
