Scheduled maintenance recipes
Copy-paste recipes for recurring compliance maintenance run by your own agent on your own schedule: document staleness sweep, memory hygiene, question triage, pre-audit evidence checklist, access review prep and risk register review, with exact token scopes, prompts, suggested cadences, and cron, launchd and GitHub Actions examples.
A compliance programme needs the same checks on a rhythm: which documents are due for review, whether stored facts are still true, which open questions need an answer, what evidence an auditor will ask for, who still has access, which risks have changed. These recipes let your own coding agent (Claude Code, Codex, Cursor) run those checks on a schedule you control, with ISMS Copilot supplying the framework judgment over the account MCP.
How the work splits:
- Your agent runs on your schedule, reads your repository and your
GRC.md, and writes a report to a file. - ISMS Copilot answers the framework questions: what a clause requires, what a reviewer should check, what evidence a control usually needs.
- Your people decide. Every recipe produces proposals for review. The agent does not conclude that anything is compliant, approve a document or change a record on its own.
Nothing here runs on ISMS Copilot's side. There is no scheduler in ISMS Copilot: the schedule is yours (cron, launchd, GitHub Actions or any other runner), and each run is an ordinary MCP session from your agent.
Before you start
- Connect your agent to ISMS Copilot: Set up with your agent, or Connect Claude Code and Connect Cursor and Codex.
- Add the routing rule from Delegate GRC work from your agent to your
CLAUDE.md,AGENTS.mdor Cursor rule. - Write a thin
GRC.mdat the repository root: pointers to your systems of record, what the agent may change, approvers, schedule, output folder and audit date. See The GRC.md convention. - Create one token per recipe in Settings → Connected apps, with only the scopes that recipe lists. A scheduled token without write scopes cannot change your memories or company context by mistake (it can still open conversations, which
conversations:createallows). Token scopes limit what the agent can do in ISMS Copilot; they do not limit what it can do on your machine (see Running on a schedule). See Tokens, scopes, and security.
Choosing a cadence
The cadences below are starting points. Adjust them to one rule: match how often a recipe runs to how often its reviewer actually reads and signs the report. A report nobody reads is noise that trains people to ignore the next one.
- A weekly run on a register that changes a few times a year produces the same report every week. Monthly or quarterly is enough.
- Event-driven reruns (someone leaves, a system is retired, an audit closes, a new vendor) catch more than a tighter schedule does. Each recipe names its triggers.
- Daily runs make sense only as a time-boxed sprint, for example the last two weeks before an audit, and should be switched off after it.
Write the chosen cadence in GRC.md section 7, and in your policies where a framework expects a defined interval.
Rules every recipe follows
Each prompt below already contains these rules. They are listed here so you can check a run against them.
- Read
GRC.mdfirst. If it is missing or a needed section is empty, stop and report what is missing. - One conversation per deliverable. Call
create_conversationonce for the run's report, thensend_messageon the sameconversation_idfor every follow-up. Start a new conversation for the next run. - Ask for a compact reply. Pass
answer_format"brief"or"decision". The report is written by your agent from those replies. - Wait for each reply. When
create_conversationorsend_messagereturnsstatus: "generating", pollget_replyuntil it returnscompletebefore sending the next message. - Let Company Context carry the scope. On conversations your own account starts, ISMS Copilot adds your Company Context as background, so prompts do not restate scope or frameworks. It is not added in team-shared workspaces or temporary chats, or when it cannot be read; in those cases the agent summarises scope from the source
GRC.mdsection 1 points to. - Resolve the workspace. When
GRC.mdgives aworkspace_id, the agent uses it directly. If it gives only a name, the agent callslist_workspaces(which returns only workspaces the token's user owns) to find the id. - Verify only what is flagged. Check against the official source text only the items ISMS Copilot marks as unconfirmed or says it cannot confirm. Record what was verified and what could not be in a "Verified" note. The headless examples below do not pre-approve web tools, so a scheduled run usually cannot fetch official texts: it lists flagged items as "not verified" in the report for a person to check, rather than guessing.
- Write to a file, propose, do not apply. The report goes to the output location in
GRC.md. Changes are listed as proposals for a named approver. - End with a heartbeat. The last line of every report is
Ran YYYY-MM-DD: N findings, including when N is 0. A missing heartbeat means the run is broken, not that all is well.
Scope reference
These are the exact scope names. The tools each recipe calls need the scope next to them; a missing scope returns Missing required scope: ....
| Tool | Scope |
|---|---|
list_workspaces | workspaces:read |
list_documents | documents:read |
list_memories | memories:read |
create_memory, update_memory | memories:write |
create_conversation, send_message, get_reply | conversations:create |
There is no separate read scope for conversations: get_reply is covered by conversations:create. workspaces:read is needed only when your GRC.md names a workspace, so the agent can look up its workspace_id.
Recipe 1: Document staleness sweep (monthly)
Purpose: find policies and procedures that are overdue for review or due within 60 days, and propose what each review should look at. Only newly flagged documents are reported, so the same overdue item does not fill every report.
Scopes: documents:read, conversations:create, plus workspaces:read if GRC.md names a workspace.
Where review dates come from: many tools store no review dates at all. The source is your document register, or the review interval each policy states, as named in GRC.md section 4. list_documents returns metadata only for files uploaded to ISMS Copilot: id, file_name, file_type, file_size, processing_status, workspace_id and created_at (the upload time), for at most the 200 most recent uploads. It returns no content and no review dates. An upload time is not a review date: a document with no recorded review date is reported as "review date unknown" for a person to check.
Prompt:
Run the monthly document staleness sweep.
1. Read GRC.md at the repository root. Use section 4 for the document register
and policy locations. If it is missing, stop and write a short report saying
what is missing.
2. Build the list of documents with owner, last review date and review interval
from the register, or from the interval each policy states. Call
list_documents to see which documents are uploaded to ISMS Copilot: for a
named workspace, first call list_workspaces for its workspace_id and pass
it; for "personal", call it without workspace_id. Never treat created_at as a review date. If list_documents returns 200
entries, say in the report that older uploads may be missing.
3. Mark each document as overdue, due within 60 days, current, or "review date
unknown". Read the earlier staleness reports in the output location, if any,
and keep only documents not already flagged in a report dated after the
document's last recorded review. A "review date unknown" document is
reported once, then not again until a review date is recorded.
4. If there are newly flagged documents, call create_conversation once
(answer_format "brief", mode fast, workspace_id if set) and ask, for each by
title and purpose (not its full text), what a reviewer should check given
the frameworks in our scope. Use send_message on the same conversation for
follow-ups. Whenever a call returns status "generating", poll get_reply
until "complete" before sending the next message.
5. Verify only what ISMS Copilot marks as unconfirmed or says it cannot confirm,
against the official source text; list anything you cannot verify as "not
verified". Do not re-check confirmed answers.
6. Write YYYY-MM-DD-document-staleness.md to the output location in GRC.md
section 8: a table of newly flagged documents (document, owner, last review,
status), one proposed review note per overdue or due document, the "review
date unknown" documents for a person to date, and a "Verified" note. Assign
each proposal to the approver in GRC.md section 6. Do not edit any policy or
register. The last line is "Ran YYYY-MM-DD: N findings".Schedule: monthly, on the 2nd at 07:30.
30 7 2 * * cd /path/to/grc-repo && claude -p "$(cat prompts/document-staleness.txt)" --allowedTools "Read,Glob,Grep,Write,mcp__ismscopilot__list_workspaces,mcp__ismscopilot__list_documents,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply" >> grc-reports/cron.log 2>&1GitHub Actions: cron: "30 7 2 * *". See Running on a schedule for the full workflow.
Recipe 2: Memory hygiene (quarterly, plus after changes)
Purpose: keep your ISMS Copilot memories accurate. Memories are applied to future turns, so an outdated one (an old audit date, a retired system, a changed scope) quietly skews every answer.
When: quarterly on a schedule, and also run it by hand after an audit closes, a system is retired, or scope changes.
Scopes: two tokens, two steps.
| Step | Scopes |
|---|---|
| Propose (scheduled) | memories:read, conversations:create, plus workspaces:read if GRC.md names a workspace |
| Apply (run by a person after approval) | memories:write |
The scheduled token has no memories:write, so the scheduled run cannot change a memory even if the prompt is ignored. Updates happen only in the apply step, after an approver has ticked the proposals.
Propose prompt:
Run the memory hygiene review. Do not change any memory in this run.
1. Read GRC.md at the repository root. If it names an ISMS Copilot workspace,
call list_workspaces to get its workspace_id.
2. Call list_memories for the workspace (and without workspace_id for personal
memories if GRC.md says personal memories are in scope).
3. Compare each memory with the systems of record GRC.md points to. Flag
memories that duplicate each other, contradict a system of record, reference
dates that have passed, or name systems, people or scope that no longer apply.
4. For memories that state a framework fact, call create_conversation once
(answer_format "brief", mode fast, workspace_id if set) and ask whether each
statement is still accurate. Use send_message on the same conversation for
the rest, polling get_reply until "complete" whenever a call returns status
"generating". Verify only what ISMS Copilot marks as unconfirmed or says it
cannot confirm, against the official source text; list anything you cannot
verify as "not verified".
5. Write YYYY-MM-DD-memory-hygiene.md to the output location: one row per
flagged memory with memory_id, current text, the problem, and the proposed
new text (max 500 characters) or "retire". Add an empty checkbox per row for
the approver in GRC.md section 6. Add a "Verified" note. The last line is
"Ran YYYY-MM-DD: N findings".Apply prompt (run by a person, with the apply token, after the report is approved):
Read the approved memory hygiene report at <path>. For each row whose checkbox
is ticked and whose proposal is new text, call update_memory with that
memory_id and the approved text, exactly as written. Skip unticked rows.
update_memory only works on memories this token's user created: if a call
fails for a teammate's memory, list it for that person to update by hand. For
rows marked "retire", do not change them: list them so a person can delete
them in the ISMS Copilot web app. Report what you changed.The MCP has no delete tool for memories. Retiring one is a manual step in the web app (see Using memories).
Schedule: quarterly, on the 15th of January, April, July and October at 10:00.
0 10 15 1,4,7,10 * cd /path/to/grc-repo && claude -p "$(cat prompts/memory-hygiene.txt)" --allowedTools "Read,Glob,Grep,Write,mcp__ismscopilot__list_workspaces,mcp__ismscopilot__list_memories,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply" >> grc-reports/cron.log 2>&1GitHub Actions: cron: "0 10 15 1,4,7,10 *", with workflow_dispatch for the manual reruns.
Recipe 3: Question triage (Tuesday and Thursday digest)
Purpose: answer the compliance questions that pile up (from engineers, security questionnaires, auditors, customers' due diligence) with a first draft and a clear owner, twice a week, so a person only reviews and decides.
Scopes: conversations:create, plus workspaces:read if GRC.md names a workspace.
Setup: add the questions inbox file named in GRC.md section 4 (for example grc-questions/inbox.md). People append one question per line or per heading, with who asked and the deadline. The agent never edits or deletes the inbox; it copies each question into the report, and a person archives answered questions.
Prompt:
Run the question triage digest.
1. Read GRC.md at the repository root, then the questions inbox it names. If
GRC.md names a workspace, call list_workspaces to get its workspace_id. Read
all earlier triage reports in the output location, if any, and keep only
questions that appear in none of them. If there are none, write a report containing
only the line "Ran YYYY-MM-DD: 0 findings" and stop.
2. Call create_conversation once for this run (answer_format "decision", mode
fast, workspace_id if GRC.md names a workspace). Send the first question,
then each remaining question with send_message on the same conversation.
Send the question and the relevant facts, not whole documents. Whenever a
call returns status "generating", poll get_reply until "complete" before
sending the next question.
3. For each question, record: the draft answer, the framework references given,
whether the answer depends on evidence we hold (and where GRC.md says that
evidence lives), and the approver from GRC.md section 6.
4. Verify only what ISMS Copilot marks as unconfirmed or says it cannot confirm,
against the official source text; list anything you cannot verify as "not
verified". Do not re-check confirmed answers.
5. Write YYYY-MM-DD-question-triage.md to the output location. Put questions
whose deadline is within 48 hours at the top, under "Due within 48 hours".
Then one section per question with status "draft ready for review", "needs
evidence from <owner>" or "needs a decision from <approver>", and a
"Verified" note. Do not send any answer to anyone. The last line is
"Ran YYYY-MM-DD: N findings".Schedule: Tuesdays and Thursdays at 08:00.
0 8 * * 2,4 cd /path/to/grc-repo && claude -p "$(cat prompts/question-triage.txt)" --allowedTools "Read,Glob,Grep,Write,mcp__ismscopilot__list_workspaces,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply" >> grc-reports/cron.log 2>&1GitHub Actions: cron: "0 8 * * 2,4".
Recipe 4: Pre-audit evidence checklist (monthly, weekly before the audit)
Purpose: keep an up-to-date list of the evidence an auditor is likely to ask for, where it should be, and what is still missing. Monthly most of the year, weekly in the 30 days before the audit date in GRC.md section 2.
Scopes: conversations:create, documents:read, memories:read, plus workspaces:read if GRC.md names a workspace.
How the cadence works: the job runs weekly. The prompt first checks the date and exits with a one-line note unless the audit is within 30 days or this is the first run of the month.
Prompt:
Run the pre-audit evidence checklist.
1. Read GRC.md at the repository root and take the audit date from section 2.
If the audit date is missing or has passed, write a report containing only
"Ran YYYY-MM-DD: 0 findings (no upcoming audit date in GRC.md)" and stop.
If the audit is more than 30 days away and today's day of the month is
greater than 7, write a report containing only
"Ran YYYY-MM-DD: 0 findings (not in audit window)" and stop.
2. Call list_documents and list_memories to know what is already uploaded and
what facts are recorded: for a named workspace, first call list_workspaces
for its workspace_id and pass it; for "personal", call them without
workspace_id. If list_documents returns 200
entries, note that older uploads may be missing.
3. Call create_conversation once for this run (answer_format "decision", mode
think, workspace_id if set) and ask for the evidence an auditor typically
requests for the audited framework and our scope, grouped by requirement.
If a previous checklist exists in the output location, summarise its open
gaps in that first message so the answer builds on it. Use send_message on
the same conversation for follow-ups. Whenever a call returns status
"generating", poll get_reply until "complete".
4. For each evidence item, check the evidence locations in GRC.md section 4
that you can read, and mark it "found at <path>", "not found" or "cannot
check from here". Do not judge whether found evidence is sufficient: that is
the approver's call.
5. Verify only what ISMS Copilot marks as unconfirmed or says it cannot confirm,
against the official source text; list anything you cannot verify as "not
verified".
6. Write YYYY-MM-DD-pre-audit-checklist.md to the output location: days to the
audit, a table (requirement, evidence item, status, owner), the gaps first,
then a "Verified" note. The last line is "Ran YYYY-MM-DD: N findings", where
N is the number of gaps.mode: "think" needs a paid plan and falls back to fast on a free plan. Fast works for this recipe too.
Schedule: Wednesdays at 09:00 (the prompt decides whether this week's run does anything).
0 9 * * 3 cd /path/to/grc-repo && claude -p "$(cat prompts/pre-audit-checklist.txt)" --allowedTools "Read,Glob,Grep,Write,mcp__ismscopilot__list_workspaces,mcp__ismscopilot__list_documents,mcp__ismscopilot__list_memories,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply" >> grc-reports/cron.log 2>&1GitHub Actions: cron: "0 9 * * 3".
Recipe 5: Access review prep (quarterly, plus when someone leaves)
Purpose: prepare the periodic user access review that ISO/IEC 27001:2022 Annex A 5.18 (access rights) and SOC 2 CC6.2 and CC6.3 expect: compare who actually has access with who should, and draft the list of leavers and excess rights for a person to sign. The agent changes nothing.
When: quarterly is common practice; write the interval you choose in your access control policy. Rerun by hand whenever someone leaves.
Scopes: conversations:create, plus workspaces:read if GRC.md names a workspace. ISMS Copilot only advises what the review should check; it does not see your systems.
How the agent reads access: with your harness's own tools, not through ISMS Copilot. For example gh api orgs/<org>/members for a GitHub organisation, or your cloud provider's CLI to list IAM users and role assignments. Give the run read-only credentials for those systems (for example a GitHub token with only read:org, a cloud role limited to read access): the credential, not the prompt, is what prevents changes.
Prompt:
Prepare the access review. Do not change any access, account or group.
1. Read GRC.md at the repository root. Take the people and access register
from section 4. If it is missing, stop and report what is missing. If GRC.md
names a workspace, call list_workspaces to get its workspace_id.
2. List current members and privileged roles for each system the register
covers, using read-only commands only (for example: gh api orgs/<org>/members,
and the cloud CLI's list commands for users and role assignments). Record
the command used for each list in the report.
3. Call create_conversation once (answer_format "brief", mode fast,
workspace_id if set) and ask what a periodic access review should check for
our scope, for example leavers, dormant accounts, shared accounts and
privileged roles. Use send_message on the same conversation for follow-ups,
polling get_reply until "complete" whenever a call returns status
"generating".
4. Compare the lists with the register. Draft: accounts with no matching person
(possible leavers), people with more rights than their role in the register,
and privileged accounts to confirm.
5. Verify only what ISMS Copilot marks as unconfirmed or says it cannot confirm,
against the official source text; list anything you cannot verify as "not
verified".
6. Write YYYY-MM-DD-access-review.md to the output location: one table per
system (account, finding, proposed action), a sign-off line for the approver
in GRC.md section 6, and a "Verified" note. The last line is
"Ran YYYY-MM-DD: N findings".Schedule: quarterly, on the 5th of February, May, August and November at 11:00.
0 11 5 2,5,8,11 * cd /path/to/grc-repo && claude -p "$(cat prompts/access-review.txt)" --allowedTools "Read,Glob,Grep,Write,Bash(gh api:*),mcp__ismscopilot__list_workspaces,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply" >> grc-reports/cron.log 2>&1Bash(gh api:*) pre-approves gh api calls only; add your cloud CLI's list commands the same way. Pre-approval is not a read-only guarantee (gh api can also send writes), which is why the credential must be read-only. GitHub Actions: cron: "0 11 5 2,5,8,11 *", with workflow_dispatch for reruns when someone leaves.
Recipe 6: Risk register review (quarterly, plus after significant change)
Purpose: keep the risk register current. ISO/IEC 27001:2022 clause 8.2 asks for risk assessments at planned intervals and when significant changes are proposed or occur; this recipe covers both triggers. The agent proposes new risks or rescoring; it never edits scores.
When: quarterly, and rerun by hand after a significant change such as a new vendor, a new product or an incident.
Scopes: conversations:create, plus workspaces:read if GRC.md names a workspace.
Prompt:
Run the risk register review. Do not edit the register.
1. Read GRC.md at the repository root, then the risk register it names in
section 4. If GRC.md names a workspace, call list_workspaces to get its
workspace_id. Read the previous risk review report in the output location, if
any, and note its date.
2. List changes since that date that could affect risk: new or removed vendors,
products, systems or locations, incidents, and changes to the policies and
registers GRC.md points to (for example from git log on those paths). If a
change was given to you by hand for this run, include it.
3. Call create_conversation once (answer_format "decision", mode fast,
workspace_id if set). Send a short summary of the changes and the affected
risk titles (not the whole register) and ask which new risks to consider and
which existing risks may need rescoring or new treatment. Use send_message on
the same conversation for follow-ups, polling get_reply until "complete"
whenever a call returns status "generating".
4. Verify only what ISMS Copilot marks as unconfirmed or says it cannot confirm,
against the official source text; list anything you cannot verify as "not
verified".
5. Write YYYY-MM-DD-risk-review.md to the output location: changes considered,
proposed new risks, proposed rescoring with the reason for each, each
assigned to the risk approver in GRC.md section 6, and a "Verified" note.
The last line is "Ran YYYY-MM-DD: N findings".Schedule: quarterly, on the 20th of March, June, September and December at 14:00.
0 14 20 3,6,9,12 * cd /path/to/grc-repo && claude -p "$(cat prompts/risk-review.txt)" --allowedTools "Read,Glob,Grep,Write,Bash(git log:*),mcp__ismscopilot__list_workspaces,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply" >> grc-reports/cron.log 2>&1GitHub Actions: cron: "0 14 20 3,6,9,12 *", with workflow_dispatch for reruns after a significant change. Use actions/checkout with fetch-depth: 0 so git log sees the history.
Running on a schedule
Save each prompt as a text file in your repository (for example prompts/document-staleness.txt) so the prompt itself is reviewed like code. The examples use Claude Code in headless mode (claude -p). --allowedTools pre-approves the tools the run needs (reading and searching files, writing the report, and the listed ISMS Copilot tools) so the headless run does not stop for a permission prompt. It does not block other tools on its own: the token's scopes are the hard limit on ISMS Copilot operations, but they say nothing about local files: with Write pre-approved, the agent can write anywhere the runner user can. Run schedules from a dedicated clone or runner account that holds only the GRC repository, review the output folder before merging anything, and deny tools you do not need in your Claude Code settings or with --disallowedTools (for example Edit, and Bash for every recipe that does not list a Bash(...) pattern). Other harnesses have their own headless mode (for example codex exec for Codex); check your harness documentation for the equivalent flags.
The example times are spread across different days so runs do not pile up on one morning and each reviewer gets their report on its own day.
cron (Linux)
The cron lines above assume the ISMS Copilot server is registered for the user that runs cron (see Connect Claude Code) and that claude is on cron's PATH. Cron starts with a minimal environment: use absolute paths if the job cannot find claude.
launchd (macOS)
On a Mac, prefer launchd over cron: a job whose time passes while the Mac sleeps runs when it wakes. Put a plist in ~/Library/LaunchAgents/, with ProgramArguments running a small shell script that contains the command from the recipe, and a StartCalendarInterval for the time (for example Weekday 3, Hour 9, Minute 0 for Wednesdays at 09:00, or Day 2, Hour 7, Minute 30 for the 2nd of each month at 07:30). Load it with launchctl load ~/Library/LaunchAgents/<your-label>.plist. A laptop that is off does not run the job, so use a shared runner for anything the team depends on.
GitHub Actions
A scheduled workflow runs the recipe on GitHub's runners and keeps the report as a build artifact. Store the recipe's ISMS Copilot token as a repository secret (here ISMS_COPILOT_TOKEN) and your Claude Code credential as another (here ANTHROPIC_API_KEY).
name: grc-document-staleness
on:
schedule:
- cron: "30 7 2 * *" # 2nd of each month, 07:30 UTC
workflow_dispatch: {}
permissions:
contents: read
jobs:
sweep:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- run: npm install -g @anthropic-ai/claude-code
- name: Register ISMS Copilot MCP
run: claude mcp add --transport http ismscopilot https://account.ismscopilot.com/v1/account/mcp --header "Authorization: Bearer $ISMS_COPILOT_TOKEN"
env:
ISMS_COPILOT_TOKEN: ${{ secrets.ISMS_COPILOT_TOKEN }}
- name: Run the sweep
run: |
mkdir -p grc-reports
claude -p "$(cat prompts/document-staleness.txt)" \
--allowedTools "Read,Glob,Grep,Write,mcp__ismscopilot__list_workspaces,mcp__ismscopilot__list_documents,mcp__ismscopilot__create_conversation,mcp__ismscopilot__send_message,mcp__ismscopilot__get_reply"
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
- uses: actions/upload-artifact@v4
with:
name: grc-reports
path: grc-reports/GitHub schedules run in UTC and can start a few minutes late.
An artifact is not automatically present in the next run's checkout. Most recipes compare with the previous report in the output location (recipes 1, 3, 4 and 6), so get each report into the repository instead: add a step that opens a pull request with the new report (this needs contents: write and pull-requests: write permissions), and the approver named in GRC.md reviews and merges it like any other change. The next run then finds it on the default branch.
Reviewing the output
Each report is a proposal. A useful review routine:
- Check the heartbeat line. If a scheduled report is missing, or its last line is not
Ran YYYY-MM-DD: N findings, fix the run before trusting the silence. - Read the summary and the "Verified" note. Items that could not be verified need a person to check them before anyone relies on them.
- Accept, change or reject each proposal. Apply accepted changes yourself, or through the apply step for memories.
- If a run produced noise, tighten
GRC.md(more precise locations) or lower the cadence before changing the prompt.
Each run uses your ISMS Copilot plan like any other conversation, and your agent's own usage on its side. If a scheduled turn hits your plan limit, the tool error carries the reset time; the run should write what it has and stop. For measured results of delegating from Claude Code, see the benchmark.