Scheduling
Scheduling lets CodeBot return to a task later, remind you about something, run a recurring check, react to an event from a connected service, or decide that a useful future follow-up is worth scheduling.
Schedules can originate in two ways:
- Requested scheduling, when you explicitly ask CodeBot to do something later.
- Proactive Mode, an opt-in Campfire feature that lets CodeBot decide whether to arrange a useful future interaction.
You normally create schedules by asking in ordinary language:
- Remind me in two hours to check this build.
- At the end of September, remind me to update the new Apple SDKs.
- Every Monday at 9:00, review the open project-management items.
- Check this three times a day at 9:00, 13:00, and 17:00.
- When a new unanswered topic appears on Discourse, check whether it needs a reply.
CodeBot works out the appropriate schedule and confirms what it created. When a request uses a relative time such as “tomorrow morning”, CodeBot checks the current date, time, and time zone before scheduling it.
You can review and adjust active Schedules in the Manage CodeBot Data sheet.
Schedule Types
CodeBot supports:
- One time after a delay, such as in 30 minutes or in three days.
- One time at a specific date and time.
- Daily at one or several times.
- Weekly on a particular weekday and time.
- Monthly on a particular day and time.
- External-event schedules, when the current host and connected service advertise a supported event.
Recurring schedules use the host's local time zone unless you specify another one. By default, CodeBot avoids stacking repeated runs when an earlier scheduled run is still waiting for your response.
External Events
A connected service can expose events that wake a schedule. For example, a Discourse connection may advertise an event for newly available forum topics; Instagram might trigger an event for new private messages or comments
Describe the event and the work you want done:
When a new Discourse topic appears, inspect it and draft a reply or tell me if it needs a manual response.
CodeBot checks which triggers the current host and connection actually support before creating the schedule. It cannot create an external-event schedule for an event that has not been advertised by the connected service.
External events can arrive frequently. CodeBot can apply duplicate suppression and a cooldown so repeated copies of the same event do not create noisy runs.
What Happens When a Schedule Is Due
A scheduled run does not interrupt work already in progress. CodeBot waits until the session is idle for a good while, and then shows a 30-second countdown:
Scheduled action title coming up in 30s... (Do it now) (Delay)
During the countdown:
- Do it now starts the scheduled run immediately.
- Delay postpones it for 30 minutes.
- Doing nothing lets the countdown reach zero and starts the run normally.
The countdown is only a pre-run gate. CodeBot does not begin the scheduled request while it is counting down, and the countdown line disappears when the run starts.
A one-time schedule is complete after it runs. A recurring schedule calculates its next occurrence. If the scheduled work needs your input, approval, or review, CodeBot leaves the result in the chat and can draw your attention to it. A run with nothing actionable may complete quietly.
When CodeBot Is Closed
Schedules are stored locally. CodeBot does not keep running after the host application quits, so a schedule cannot execute while the application is closed.
When you reopen the solution or workspace, CodeBot loads its schedules again. An overdue schedule can run once the session is available and idle.
Permissions and Automatic Actions
Scheduled work follows the same tool and approval rules as an ordinary chat request. Creating a schedule does not grant new permissions.
For example, a future run can inspect local context using tools that are already available, but editing files, running guarded commands, publishing a post, or changing an external account may still require approval. For higher-risk work, schedule a review or triage pass first and let the future run ask before making the change.
Writing a Useful Request
A good scheduling request includes:
- When it should run.
- What CodeBot should inspect or continue.
- What outcome should be shown to you.
- Whether it repeats.
- Any condition for staying quiet, such as reporting only when action is needed.
For example:
Every morning at 9:00, inspect the current build status. Tell me only about new failures; otherwise, complete the check quietly.
If timing is ambiguous, include a date, local time, or time zone. If the future task depends on context that may change, tell CodeBot to inspect the current files or connected service again rather than relying only on today's conversation.
Reviewing and Removing Schedules
Open the Manage CodeBot Data sheet from thr CodeBot menu, and select the Scheduled tab to review schedules for the current solution or workspace.
The list shows each schedule's:
- state
- title
- next run
- trigger
- prompt
You can remove selected schedules or remove all schedules from this tab. Completed and failed entries remain visible until removed.
You can also manage schedules by asking CodeBot:
- List my scheduled prompts.
- Move the weekly review to Tuesday at 10:00.
- Pause the Talk triage schedule.
- Cancel the September reminder.
CodeBot uses the schedule's internal identifier to update or cancel the correct entry; you do not need to know or provide that identifier.
Proactive Mode
In Campfire, you can enable Allow Proactive Mode in Workspace Settings for the current workspace. It is off by default.
When Proactive Mode is enabled and the workspace has been idle, CodeBot may perform a private planning check using recent conversation context. This check decides whether one future interaction would be genuinely useful. It might schedule a concrete workspace nudge, an idea worth revisiting, or a natural check-in; it can also decide that nothing should be scheduled.
The private planning check does not post a message in the chat and does not show the 30-second scheduled-action countdown. CodeBot limits how often it performs these checks, avoids duplicate follow-ups, and keeps at most one proactive schedule pending.
If CodeBot creates a proactive schedule:
- It appears in Manage CodeBot Data under Scheduled, with Proactive as its trigger.
- When it later becomes due, it follows the same idle wait and 30-second countdown as any other scheduled prompt.
- The resulting interaction appears as CodeBot initiating the conversation, not as a message attributed to you.
- It follows the same tool and approval rules as an ordinary request.
Turning off Proactive Mode prevents CodeBot from creating new proactive schedules. It does not remove schedules that were already created; review or remove those separately under Scheduled.
Storage
For Elements solutions, scheduling data is stored with the other durable per-solution CodeBot data in the platform's application-data folder. On macOS, the layout is:
~/Library/Application Support/RemObjects Software/CodeBot/
<solution-name>-<solution-hash>/
Cache/
Connections.json
Memories.json
Schedules.json
Cache/ contains disposable chat and runtime state. Schedules.json is outside that folder, so deleting the solution's cache and chat history does not delete its schedules.
Campfire stores schedules inside the workspace:
.campfire/codebot.schedule
This makes schedules workspace- or solution-specific and keeps them with the rest of that workspace's CodeBot data.
Good Scheduling Habits
- Prefer one clear recurring schedule over several overlapping ones.
- Ask CodeBot to stay quiet when a check finds nothing actionable.
- Use a connected-service event instead of frequent polling when the service provides one.
- Review old completed, failed, or no-longer-useful schedules periodically.
- Schedule a future review rather than an automatic destructive or public action when fresh approval or judgment will matter.