All Bernard releases, newest first.
Tasks now receive a proportional fraction of the available step budget instead of a fixed step count, and the final step forces text-only output to guarantee structured JSON results.
TASK_STEP_RATIO, getTaskMaxSteps, and
makeLastStepTextOnly utilities in task.ts
wrapTaskResult to robustly extract and validate JSON from
arbitrary output, handling nested objects, escaped quotes, and multiple JSON blocks
maxSteps and
experimental_prepareStep options
The auto-create threshold now accepts both fractional (0–1) and percentage (1–100) values, and pending specialist candidates are re-evaluated automatically when settings change.
normalizeThreshold utility in config.ts that clamps
values to the [0, 1] range regardless of input format
/agent-options threshold command to display both normalized and
percentage values
promoteCandidate helper
A reusable Plan-Act-Critic (PAC) loop now wraps sub-agents, specialists, and cron job executions when critic mode is enabled. The critic verifies each agent’s work and retries on failure with targeted feedback.
pac.ts module with runPACLoop() for consistent
critic integration
When a response hits the max-tokens limit and is cut off, Bernard
automatically continues where it left off — up to 3 continuations — then
recommends an optimal token limit based on actual usage.
max-tokens value (1.25×
actual usage)
/options max-tokens instructions if still incomplete after 3
continuations
/debug command — prints a diagnostic report (runtime, config,
API key status, MCP servers, RAG stats) with no secrets leaked
Smarter specialist suggestions powered by token-based similarity scoring, plus a new auto-creation mode that saves high-confidence candidates without manual review.
/agent-options command to toggle auto-creation and set confidence
threshold at runtime
BERNARD_AUTO_CREATE_SPECIALISTS and
BERNARD_AUTO_CREATE_THRESHOLD environment variables
Control how many tool-call iterations the agent can take per request, and benefit from step-by-step planning in every conversation — not just critic mode.
BERNARD_MAX_STEPS environment variable (default 25) with runtime
override via /options max-steps
Bernard now has full temporal context — every user message carries an ISO 8601 timestamp, and the system prompt includes the current date and time.
time tool output now includes seconds and timezone
Two new tools — file_read_lines and file_edit_lines
— give Bernard precision file editing without shelling out to
sed or awk.
file_read_lines supports offset/limit for targeted reads across big files
Override the provider and model for any specialist, sub-agent, or task invocation. Set a default model on specialists at creation time, or pass an override at call time.
provider/model that is used
every time they run
/specialists listingsTasks are now single-step: one LLM call with tool use, then structured output. Saved tasks can be invoked by ID, and the REPL shows tasks and routines separately.
maxSteps: 2 (one tool-use round + structured result)
taskId parameter — run saved task routines by ID or via
/task-{id} in the REPL
Tool-result summaries shown to the critic now use an adaptive 8000-char budget instead of a fixed 500-char slice, so the critic sees far more context before judging.
...) added to tool resultsAgents no longer retry the exact same failed command, and external API mutations get a short delay before re-verification to account for eventual consistency.
Candidates that have already been saved as specialists are automatically filtered out of future suggestions.
/candidates outputCritic mode now retries up to 2 times when it detects issues, feeding its verdict back to the agent for correction before giving up.
[CRITIC] labelparseCriticVerdict utility extracted to output module/create-task Command fix
Added /create-task guided creation command and refactored duplicate
creation logic.
/create-task REPL command for guided task routine creationrunGuidedCreation helper
/routines, /create-routine, and
/create-task commands
Specialists are now automatically matched to user input using keyword scoring, with high-confidence matches auto-dispatched.
Tasks are isolated, focused executions that return structured JSON output. Unlike
sub-agents (which return free-form text), tasks always produce a
{status, output, details?} response — making them ideal for
machine-readable results, routine chaining, and conditional branching.
{status: "success"|"error", output, details?}
/taskSpecialists are reusable expert profiles — persistent personas with custom system prompts and behavioral guidelines that shape how a sub-agent approaches work. Unlike routines (which define what steps to follow), specialists define how to work.
generateText loop with a 10-step budget
~/.local/share/bernard/specialists/
/specialists or invoke directly with /{id}
Bernard automatically detects recurring delegation patterns in your conversations and
suggests new specialists. Detection runs in the background when you exit a session or
use /clear --save.
/candidatesCritic mode adds planning, proactive scratch/memory usage, and post-response verification. Recommended for high-stakes work like deployments, git operations, and multi-file edits.
A fourth specialized domain in Bernard's RAG memory system, joining Tool Usage Patterns, User Preferences, and General Knowledge. Conversation summaries capture what was discussed, approaches taken, tools/specialists/routines used, and outcomes.