Skip to content

Releases: dm1try/samagotchi

samagotchi 0.69.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 19:47

Added

  • Web: a new chain link (continue →) shows the model picker in its composer until its first turn, so the next link can
    start on another model or provider; the continue toast shows the fallback warning when the previous model's host is
    gone.
  • Built-ins a session's toolkit leaves out are reachable: find_tools searches them (group chi) beside MCP
    servers' tools, and call_tool runs them through the usual guardrails as the real call. remove: /
    --no-tool / /toolkit remove stay hard.

Changed

  • find_tools' description and its server parameter (now group) changed: sessions with MCP servers read their
    prompt again once. So do sessions on lean, child, coordinator or a kit based on them: they now declare
    find_tools and call_tool, and their not-loaded line changed.
  • A toolkit based on lean or child (a toolkit.kits entry, a bundle's chi.toolkit) no longer keeps the
    built-ins its base leaves out from the model: they're reachable through find_tools / call_tool, guarded as
    themselves. Name one under remove: to keep it out.
  • Guardrail rules on call_tool no longer see calls of chi's own tools made through it; they match the tool's own
    name.
  • Shipped bundles: a change that needs a newer chi marks the manifest requires_chi_next instead of raising
    requires_chi; rake release:bump raises it to the released version and rake release:check fails on a marker
    left over.
  • /toolkit remove X on a tool the toolkit leaves out is saved (it makes X unreachable). /toolkit add X then
    /toolkit remove X now removes X (it used to go back to the kit's default), and a remove then an add declares X.
  • The child toolkit also removes delegate and delegate_result: a child on it can't start children, even
    through call_tool.

Fixed

  • A TLS handshake blip on a gateway (SSL_connect … unexpected eof, a reset mid-handshake) is retried like other
    network errors instead of failing the turn at once; a certificate chi doesn't trust, a certificate for another
    name, or an https:// base_url on a plain HTTP port fails at once, saying what to check (SSL_CERT_FILE, the
    host's base_url).
  • A bundle tool named like an MCP tool (mcp_fs_read) no longer takes call_tool calls of that MCP tool out of
    mcp_* rules.
  • Web: on a phone the start page's model, thinking and LLM context chips wrap instead of being cut short; a toast no
    longer covers a fresh link's open model panel; the family popover's status dots keep pulsing in step.

samagotchi 0.68.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 15:16

Changed

  • Web: the settings popovers' selects (thinking level, LLM context strategy and apply) look the same in Safari, Chrome
    and Firefox: chi's own box and caret instead of each browser's native control.
  • Web: the thinking chip comes before the LLM context chip, on the session bar (think, reasoning, llm ctx, tools) and
    beside the start page's model picker.

Fixed

  • /model while the web or another terminal read /stats no longer leaves the new model on the old model's prompt
    profile (its turns formatted for the wrong family until the next /model).
  • Web: the sessions strip no longer blinks when a session updates: a card fades in only when it is new to the list,
    and a running or waiting card's dot keeps its pulse through the redraw. All sessions no longer re-fades on every
    update or search keystroke either.

Update with chi update (the system bundle 0.68.0), then restart chi web.

samagotchi 0.67.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 11:35

Added

  • Desktop helper: agents in tmux panes: with tmux.enabled: true (then chi update) the panel lists agent CLIs
    running in tmux panes, in any terminal, beside kitty's, and pastes into them with or without Enter (a pane in copy
    mode is taken out of it first). tmux.binary defaults to the tmux on chi's PATH when the launch file is written;
    chi update warns when there is none. ChiHelper --kitty is now --agents (the helper's internal seam). See
    docs/desktop.md, "Agents in kitty and tmux".
  • Continue on another model: chi send --new --continues ID --model NAME and the web API's POST /api/sessions
    with continues and model start the next link of a chain on that model (its host checked first, nothing
    archived on a refusal). See docs/sessions.md, "Session chains".
  • Host API keys from the macOS Keychain: with the variable a host's api_key_env: names unset, chi reads the key
    from the login Keychain (service chi, account the variable's name), so the desktop helper's sessions and model
    list, launchd and cron reach keyed hosts. Store a key with security add-generic-password -s chi -a VAR -w.
    chi self says VAR (keychain), chi desktop status has a host keys row, and install/upgrade warn about keys
    the helper won't get. SAMAGOTCHI_KEYCHAIN=off turns it off. See docs/configuration.md, "API keys from the Keychain".
  • The peer loop: chi and a paired Claude Code or Codex session can go back and forth on a part. A peer's answer
    wakes chi up to context.peer_turns (default 3) turns in a row, within session.max_wakes; chi fixes what it
    flagged or replies with claude_send/codex_send; an answer whose verdict is VERDICT OK arrives as a note and
    ends the round; only a message typed in the web or a TUI starts the count again (not chi send). The wake note
    frames the answer as the peer's advice, within your task; every other source keeps its guard line. Plugins
    declare a peer's source with chi.peer_source. See docs/context.md, "Peer sources: the peer loop".

Changed

  • claude-peer 0.3.0 and codex-peer 0.2.0 join the peer loop and need chi 0.67.0 (chi update, then chi bundle upgrade claude-peer / codex-peer, and /claude install-skill / /codex install-skill again for the peer's
    side). Both are now built on Samagotchi::Plugin::Peer, one shared base; their texts are unchanged but for the
    peer loop's.
  • session.max_wakes caps every wake turn in a row (delegate reports, attached context, peers); the docs said
    delegate reports only.
  • MCP: find_mcp_tools and mcp_call are now find_tools and call_tool, chi's own tool index's (the mcp
    bundle publishes its servers' tools into it: chi.tool_source, docs/plugins.md). Run chi bundle upgrade mcp
    (mcp 0.7.0) to get it; an older mcp bundle keeps its own two tools on this chi. Search, calls, lazy starts and
    /mcp work as before. Rename tool: mcp_call in guardrail rules and hooks, and mcp_call in loop-guard's or
    check-in's ignore_tools in config.yml, to call_tool; rules on mcp_* keep working (they match the MCP
    tool). Approvals saved for MCP tools (keyed mcp_call>…) no longer match: each MCP tool is asked about once
    more. The two tools' new names and place in the tool list re-prefill an MCP user's prompt once.
  • A continue whose previous link's model names a host config.yml no longer has (or a disabled one) starts the new
    link on the default model with a warning (chi send: warning: …, the API's model_warning) instead of being
    refused.

Fixed

  • Web: a session opened (or switched to) shows its live worker's features at once: the queue link on the delivery
    line, the task-stop button, Alt+Enter's queue and the stale-worker badge with Restart no longer wait for the
    session's next change.
  • Web: a switch starts the open session's page state over: a "copied ✓" on the info bar no longer carries into the
    next session, a Restart under way in one session no longer blocks Restart in another, and a worker woken after a
    failed load streams from its start, not from the previous session's cursor.
  • Web: a send stays with the session it was sent from: switching sessions while its images upload no longer sends the
    prompt into the other session, and an image whose send failed in one session is uploaded again when it is sent to
    another (it was refused there as an unknown image).

Update with chi update (it upgrades the bundles too): mcp 0.7.0, claude-peer 0.3.0, codex-peer 0.2.0 and the
system bundle 0.67.0. Then restart chi web and run chi desktop upgrade for the tmux support.

samagotchi 0.66.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 22:41

Added

  • Plugin annotation actions (web): chi.annotation(label, command:, template:, send:) adds a pill to the
    selection bar that prepares a command line of the plugin from the selected text ({quote}, {text}, {source}):
    it fills the composer (an earlier draft stays under the quote), or with send: true sends at once. Up to 3 inline,
    the rest behind ⋯. See docs/plugins.md, chi.annotation.
  • claude-peer 0.2.0: Confirm with Claude in the web's selection bar fills /claude validate with the quote;
    /claude validate|context titles a quote by its first quoted line, not its From …: label.
  • The codex-peer bundle (in the dev profile): claude-peer for an OpenAI Codex CLI session. Codex pairs (its
    chi-peer skill, installed by /codex install-skill), the codex_send tool and /codex validate|context|last
    send it a part of the work with codex queue (killed after 10 s, never a hang), and Codex's answer comes back as
    the codex-review context; Confirm with Codex in the web's selection bar. Codex's sandbox needs chi's
    context folder in writable_roots (the install card shows the line). See docs/plugins.md, "The codex-peer bundle".
  • Toolkits: a session's toolkit names the tools its prompts declare. chi ships full (every built-in, the
    default), lean (the file, shell, memory, task, question, web_fetch and context_read tools: ~1.4k tokens
    fewer) and child (lean with send_note, without memory_write); config's toolkit.kits and bundles
    (chi.toolkit) add their own. Pick one with toolkit.default / toolkit.child, chi --toolkit NAME (with
    --tool / --no-tool, also on chi send --new) or /toolkit NAME | add TOOL | remove TOOL. It is saved in the
    session when it is created and kept by continues and forks; a change applies at the next turn's start. A left-out
    tool is named in one prompt line, and a call to it is refused before the guardrails. The web shows a session not
    on full as a tools chip. See docs/configuration.md, "Toolkits".
  • Plugins: ctx.toolkit and ctx.use_toolkit(name) (before the session's first reply). The coordinator bundle
    (0.4.0) declares the coordinator toolkit (lean + delegate, delegate_result, list_sessions), and
    /coordinate puts a fresh session on it.

Changed

  • A command's name may be followed by any whitespace, a newline too: /foo on its own line with text under it
    runs /foo with that text, in the terminals and the web (before, only a space did).
  • Web: a command refused as busy mid-turn comes back into the composer (it was cleared when sent).
  • A delegate child is told to report what should change (a wrong memory or skill, instructions that led it astray)
    in its reply instead of writing memories (delegated.md).

Fixed

  • dialect: fireworks hosts: the web's ctx meter no longer reads 0% while an answer streams (Fireworks' first stream
    event carries all-zero usage; its counts come at the end).

Still open: the Claude 5.x "bound to a different conversation" 400 on Anthropic Messages hosts (see 0.65.0); its
recovery comes in a later release.

Update with chi update (the system bundle moves with the gem; claude-peer 0.2.0, coordinator 0.4.0, and the dev
profile 0.5.0 with the new codex-peer 0.1.0).

samagotchi 0.65.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 19:58

Added

  • Anthropic Messages hosts (api: anthropic): streamed text and thinking, native tool use, images, usage with
    cache reads and writes, thinking blocks replayed verbatim (also after --resume; reasoning_history defaults to
    all there). A new host key auth: bearer|x-api-key (any host) picks the header the key goes in. Thinking levels
    map to Messages' thinking (off disabled, low/medium/high adaptive at that effort, default nothing), with
    fallbacks when a host refuses a field. Recaps, ctx.ask_model and broadcast triage work there too. See
    docs/configuration.md, "Anthropic Messages hosts". Known limit until the next release: Claude 5.x models
    (Opus, Sonnet and Haiku 5.5, Fable 5.1) may stop a turn with a 400 "… bound to a different conversation" after the
    history changed under their thinking blocks; the next release adds the recovery.
  • dialect: fireworks on an api: anthropic host, for Fireworks directly or behind a gateway: Bearer auth, no
    thinking display, no cache_control, and x-session-affinity for cache routing. chi self names it.
  • A provider's refusal (Messages stop_reason: refusal, or an empty content_filter stop) ends the turn with
    no answer: refused by the provider (category) in every UI and isn't retried. A content_filter stop after some
    text keeps the text, marked [cut off by the provider's content filter].
  • Web composer: a row above the text field shows the keys while idle and, while a turn runs, where a message sent now
    goes in (after this thinking step, tool call or answer, with its clock), with cut in now and queue for after the turn links. Alt+Enter (Option+Enter) queues. See docs/cli.md, "Typing during a turn".
  • Terminal: while a turn runs, the status row ends in · typing goes in at the next step (/cut, /queue).

Changed

  • Web: a message queued for after the running turn sits below the running turn's card, not among its rows, also
    after a reload.
  • A chat host that refuses a sampling field (temperature, top_p, top_k) gets the step again without it instead
    of the turn failing; on api: openai hosts such a 400 no longer turns reasoning off.
  • A Splash or Fireworks model's vision comes from its model list instead of reading "unknown".

Fixed

  • A server error without a numeric code is classified by its type: an invalid request fails at once instead of being
    retried, an unknown model (404, NOT_FOUND) is no longer retried, a timeout_error is a 504.
  • Anthropic's context-overflow 400s ("prompt is too long", "input length and max_tokens exceed context limit")
    roll the turn back and report it as too long for the context window, also through a gateway on the OpenAI path.

Update with chi update (the system bundle moves with the gem).

samagotchi 0.64.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:29

Added

  • /queue TEXT during a running turn now works in an attached terminal and the web composer too, as it did in the
    plain REPL: TEXT runs as a turn of its own after the running one, instead of merging into it ((queued: runs after this turn)). A session whose worker is older than this says to restart it rather than steering the turn. See
    docs/cli.md, "Typing during a turn".
  • chi send --queue: the message runs as a turn of its own after the running turn instead of merging into it, and
    chi send --queue --wait waits for that turn's own answer (a running turn no longer refuses it; the running turn's
    reply, end and questions are not the answer). Each turn's reply file now carries its message's id. See
    docs/sessions.md, "Sending a message", and docs/sub-agent.md.
  • Plugins: ctx.sessions.send(id, text, delivery: :queue) runs the message as a turn of its own after the session's
    running turn; delivery: :cut raises (plugins never cut). See docs/plugins.md.

Changed

  • Plain REPL (--no-shared): the lines a turn left over (a steer it didn't merge, /queue lines, image lines, commands
    that wait) run in the order you sent them; before, an unmerged steer ran ahead of a /queue line typed earlier.
  • A message with images sent during a running turn no longer holds back the text lines sent after it: they go in at
    the turn's next step as usual, and the image message still runs as a turn of its own after it.

Fixed

  • Stopping a session mid-turn (chi sessions stop, the web's stop, a parent stopping its delegate) cancels the turn
    with its own reason, session_stopped, instead of the user's Stop: the turn's line reads "canceled (session
    stopped)", a command it was running "stopped as the session was stopped" (slow-commands 0.2.2 counts it as
    stopped, not slow), and chi send --wait --format json reports cancel_reason: session_stopped.
  • A delegate (and any worker a session's own commands start, such as chi send --new) reads hosts: from config.yml
    as it starts, so it sees a host added or changed after its parent's worker started; before, it got the parent's
    start-time hosts through SAMAGOTCHI_HOSTS_JSON, which workers no longer inherit (one set in your shell
    applies to that chi process only; put hosts in config.yml).
  • Web: a step that only called plugin tools with a verb label is titled by the label ("echoing"), not "working
    with echoing"; among other tools such a call is named by its tool ("working with read, echo").
  • Web: a send from a stale tab into a session deleted meanwhile goes back to the start page with a "was not
    found" notice, the line kept in the composer, instead of an alert.
  • chi send, the web composer and a plugin's ctx.sessions.send now report a message the session's worker refuses
    (a 4xx answer such as a delivery it doesn't run) instead of writing it as an input file the worker would merge
    anyway; a body over the worker's size limit still goes in as a file, as before.
  • chi answer, chi send --wait ID (no message) and delegate_result wait for the reply of the turn they are about
    (the answered turn, the running turn, the follow-up's turn), not a newer one queued behind it; a Continue of the
    step-limit question gets the continued turn's reply, and a Stop ends the wait as not_continued. Workers older
    than this keep the old behaviour.

samagotchi 0.63.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 09:23

Added

  • The claude-peer bundle (in the dev profile): pair a chi session with a Claude Code session you work with, and
    the claude_send tool sends Claude a part of the work (a plan step, a diff, a finding) to validate, as context or
    with a question; Claude's answer comes back as the claude-review context. /claude validate|context <text> and
    /claude last send without the model, /claude shows whether a Claude is paired, and /claude install-skill
    installs Claude's chi-peer skill, which pairs ("pair with chi "). See docs/plugins.md, "The claude-peer
    bundle".
  • Plugins: ctx.context.list gives each source's last summary: too. See docs/plugins.md, "Attached context".

Fixed

  • Attached context: a source added with chi context add NAME --push now wakes an idle session when its first
    push asks to ("wake": true); before, only later pushes could.
  • Plugins: ctx.context.list returns [] for a new session whose file isn't saved yet (a plugin command before
    the first turn) instead of raising "Session not found".
  • An after_turn hook's file refs on the answer (event[:refs]) must be under the session's folder, as a plugin
    tool row's are: a file elsewhere is refused (and logged), and a stored one is dropped when the answer is shown.
  • loop-guard (0.3.8): the card for a turn it stopped prints under the blocked call's row in the terminal, not
    before it.
  • Attached TUI: joining a session whose last turn was images alone (sent from the web) names each image once, not
    twice.
  • Attached TUI: text you had typed when the step-limit question opened comes back at the prompt once you answer
    it, instead of being lost.
  • chi -p … --non-interactive says so on stderr and exits 1 when the iteration limit cuts the turn short, instead
    of exiting 0 with the partial text as if it were the answer.
  • chi --no-shared --resume drops a question the session's last worker saved and died with, as an attached resume
    does, instead of keeping it in the session file.

samagotchi 0.62.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 08:47

Added

  • Plugins: chi.tool(…, refs: ->(args) { [...] }) gives a tool call's web row its refs (a ticket, a PR, a file
    under the session's folder) with their URL actions: the row's title opens the first, its ▾ menu offers the
    rest, on a phone too. Saved with the result, so a reload shows them. See docs/plugins.md, "Refs on a tool's
    row".

Changed

  • Web: the stage view no longer jumps: it keeps its height while a turn runs, its chip stays put when the answer
    arrives, and the finished turn slides away instead of collapsing. The stage floats above the composer (its rising at
    a turn's start moves nothing, and the history behind it glides instead of jumping); content changes inside it (the
    first words of a reply, an answered card, a short answer), so a card you answer stays where it is; it grows with a
    short ease when a card or the answer needs room; its chip is its footer (the steps open right above it); and when
    the turn moves into the history the stage slides away under the composer, then the turn appears there.
  • Web: on a phone the top bar no longer gains a row mid-turn when the hidden strip's pill grows ("· 1 waiting"), which
    pushed the whole session down; the pill drops its session count while it says live or waiting.
  • Web: while a question or approval waits in the stage view, the stage shows the whole text of the reply that asked
    it, not only its last sentence.
  • Web: the model's question or its own approval, once answered, keeps the reply that asked it (a delegate's relayed
    approval, a hook's question and the step limit don't): two muted lines under its question → answer line, the
    whole text when the card is open, live and after a reload.
  • Web: a finished turn's steps block shows its outline when its steps said something: open, one line per step that
    wrote text (a mid-turn note reads without a click), and each run of tool-only steps folded into one · N steps
    line that shows them. Live (both views) and after a reload; a turn whose steps said nothing collapses as before.
  • Web: question and approval cards answer from the keyboard. Enter in the response box or on an option submits
    (never Deny or Dismiss), and a new card takes the focus when the message box is empty.
  • github-pr 0.5.0: a path:line it links in an answer is also a file ref, so the web's ref menu offers the file in
    this checkout (editor, show in turn, copy) and a "PR diff" (or "File at head") action. Needs chi 0.61.0; run
    chi update.
  • source-links 0.5.0: each ref it links in an answer gets an "Open in " action in the web's ref menu; a
    source's new kind: key names its refs' kind (default issue). Needs chi 0.61.0; run chi update.
  • Chat hosts (api: openai) keep the running turn's reasoning across a mid-turn steer under reasoning_history: turn, as native hosts do: a person's line, a plugin's nudge (check-in, agents-md) or a step-limit Continue's text no
    longer drops the reasoning of the replies before it, so the request after it extends the one before and the
    server's prompt cache holds. A !cmd run while the step-limit question stands still starts past itself. On a stock
    Qwen template (Splash) the benefit needs chat_template_kwargs.preserve_thinking: true; see
    docs/configuration.md.

Fixed

  • A turn run in the REPL (--no-shared) keeps the answer's display and refs (source-links' and github-pr's links,
    a hook's present), so the web shows them when it opens the session; before, the save dropped them.
  • A command a signal to chi stopped (a worker's TERM, HUP or INT mid-execute) says "stopped by a signal to chi",
    not "stopped by the user"; one it kept from starting says "not run, a signal to chi stopped the turn".
    slow-commands 0.2.1 doesn't count either as slow.
  • A turn whose worker was killed (SIGKILL, a crash) keeps its tokens, speed and timings up to its last checkpoint:
    the session's stats count it as a canceled turn (worker_stopped); before, they lost it.
  • Web: hovering a ref with a ▾ at the very end of a line no longer pushes it onto the next line.
  • Web: a failed + URL attach keeps the "why" you typed (it was emptied), and a context chip with the keyboard
    focus keeps it when the chips refresh.

Update with chi update: the system bundle 0.62.0, github-pr 0.5.0, source-links 0.5.0 and slow-commands 0.2.1.
Then restart chi web.

samagotchi 0.61.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 17:43

Added

  • Hooks and plugins can attach refs to the answer: event[:refs].call(match:, kind:, target:, label:, actions:) on
    :after_turn, stored as display_refs on the answer (display only: the model never sees them). The web pairs them
    with the answer's links and text: their actions join the ref's menu, live and after a reload. Caps: 200 refs and
    256 KiB per answer; a refused ref is logged as refs_rejected. See
    docs/hooks.md.

Changed

  • A ref's values are capped (Ref, RefAction): a label at most 200 characters, at most 8 actions, a target id
    200 and a path 4,096 characters; an action's id 64 and label 100. An action URL with userinfo
    (https://user:pass@host/) is refused, and the web page refuses one too.

Fixed

  • A worker that gets TERM, HUP or INT (chi sessions stop, a closed terminal, a process-tree teardown) stops its
    running turn as a Stop with reason signal and saves it, then exits; before, the turn and its prompt were lost.
    A stopped session's worker now saves the turn it kept too.
  • A worker killed mid-turn (SIGKILL, a crash) no longer loses the whole turn: the worker writes the turn so far to
    the session file with an interrupted_turn mark (the prompt as the turn starts, then its iteration boundaries,
    at most every 10 s), so it loses only what came after its last written boundary. The next worker (or a
    --no-shared REPL resuming the session) ends that turn as canceled with a note the model reads
    (cancelled (worker-stopped)), so the session is idle again.
  • Workers outlive whoever spawned them: a worker leaves the spawner's process tree (forked again, setsid,
    reparented to init), so a tool tearing down a background chi send --wait, or a closing terminal, no longer
    kills it mid-turn (run #43 lost a 169-step turn that way).
  • A card shown during a turn by a worker that has since exited comes back read-only: no buttons. A stale check-in
    card's Nudge steered the next worker's turn on every click. Cards shown between turns (github-pr's offer, btw,
    coordinator) keep their buttons.
  • check-in nudges once per check-in: repeated Nudge clicks (or /checkin nudge) on the same check-in answer
    "check-in: already nudged at N tool calls" instead of steering the turn again. Run #43 got 12 identical nudges.
  • Web: a ref's ▾ sits in room the ref makes on hover, never over the next words.

Update with chi update: the system bundle 0.61.0 and check-in 0.2.4 (nudges once per check-in). Then restart
chi web.

samagotchi 0.60.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 18:31

Added

  • chi web has a favicon: χ on a blue-to-violet rounded square. Safari showed a "1" monogram before.
  • chi --append-system-prompt FILE (repeatable) and a config.yml append_system_prompt: list: a file's text goes
    into the system prompt after AGENTS.md, in the cached part. A relative config entry is looked up where chi runs
    (append_system_prompt: [CLAUDE.md]); the flag's files are saved in the session and kept by forks and continues.
    /stats names the prompt's files on a prompt files: line.
  • An analytics resumed mark on the turn record of a step-limit Continue (resumed: true; every other turn has
    resumed: false). continue also marks a reminder's and a wake's turn, so script/model_notes_report now counts
    Continues from resumed, falling back to continue record by record for older files. :turn_started and the
    before_turn hook payload carry resumed too.
  • A hook's or plugin's notice can be marked fallback_for: :editor: a line naming a file the viewer could open from
    a ref. The web leaves it out for a viewer on this machine with web.editor set; a phone and the terminals show it.
  • ctx.prompt_files for plugins: the files whose text is in the session's system prompt now — the AGENTS.md chain
    and the appended files — as absolute paths in prompt order.
  • The agents-md bundle, in the core profile (core 0.3.0: chi update installs it for existing core users):
    a nested AGENTS.md of the session's checkout — one in a directory the session doesn't run in, which the
    system prompt never sees — is steered into the conversation the first time a tool (read, write or
    edit) touches a file under its directory, outermost first, once per session, and never re-injected after a
    resume or a woken worker. It never stops generation or thinking, and leaves the chain's and appended
    AGENTS.md files alone (ctx.prompt_files). Files in another repository, a nested repository or a
    submodule are ignored. Opt out with skip_agents_md: true, as with the chain; bundles: agents-md:
    settings: tools, max_chars. See "The agents-md bundle" in docs/plugins.md.

Changed

  • The default step limit (turn.max_iterations) is 300, up from 100: most long build turns now finish in one turn
    instead of stopping at the step-limit question. Loops are caught by the loop-guard bundle, and check-in's card
    (at 50 tool calls, then every 50) still says a turn is long without stopping it. --no-interrupt stays 1000.
  • Started in a subdirectory, chi loads every AGENTS.md from the top of the git work tree down to the current
    directory, outermost first, instead of the subdirectory's replacing the root's. A further file is headed with its
    directory ("Project specific description for pkg/:"); a session with one AGENTS.md gets the same prompt as before.

Fixed

  • A step-limit Continue no longer drops the turn's reasoning: on a chat host (reasoning_history: turn) the
    continued turn sends the earlier replies' reasoning back as before the limit, and on a native host
    (/completion) the prompt keeps the run's thought blocks, those before a mid-turn steer too. The model keeps its
    thinking, and the first request after the Continue matches the last one before the limit (before the fix, a local
    27B read most of a 17k prompt again: 24.9 s to the first token instead of 4.0 s). Continue's text is a steer, and on a chat host still starts
    the reasoning afresh from it. After a /model change while the question stands, the Continue starts afresh.

Update with chi update: the system bundle 0.60.0, the core profile 0.3.0 (now with agents-md) and the new
agents-md 0.1.0 bundle.