---
# KIND DESCRIPTOR FRONTMATTER (supported keys for kernel/config/<kind>.md)
#
# 1) new_session_workspace (optional, string)
#    Default workspace used when creating a NEW session on this channel kind.
#    Supports ~/ expansion. If missing, daemon will try to create it.
#    Falls back to ALADUO_WORK_DIR when omitted or blank.
#
#    Example:
#    new_session_workspace: ~/code
#
# 2) prompt_mode (optional, string)
#    Default system-prompt mode for this channel kind.
#    - append   (default): keep Claude Code preset, append prompts
#    - override          : skip Claude Code preset, use only assembled prompts
#
#    Example:
#    prompt_mode: append
#
# 3) time_gap_minutes (optional, number)
#    Minutes of inactivity before injecting a time-context hint into the
#    next user turn. Helps the agent sense elapsed time after idle gaps.
#    Set to 0 to disable. Instance Descriptors override Kind Descriptors.
#    Default: 60 (1 hour).
#
#    Example:
#    time_gap_minutes: 30
#
# 4) Claude Agent SDK-aligned options (optional)
#    These keys map directly to SDK query() options and may also be set on
#    Instance Descriptors. Instance values override Kind values.
#
#    Canonical keys:
#    - allowedTools: ["mcp__aladuo__Notify"]
#        Permission auto-approve list. Does NOT add tools to the model's
#        surface — that is claude.tools' job (below).
#    - disallowedTools: ["mcp__chrome-devtools"]
#        Blocks MCP tools (mcp__server or mcp__server__Tool entries).
#        Built-in tool names here are DEPRECATED no-ops (warned + ignored):
#        the built-in surface is allowlist-only.
#    - additionalDirectories: ["~/notes", "/srv/shared"]
#
#    Accepted aliases:
#    - allowed_tools
#    - disallowed_tools
#    - additional_directories
#    - add_dir / add_dirs
#
# 5) claude.tools (optional, nested; claude runtime only)
#    EXTRA built-in tools unioned onto the runtime's core allowlist
#    (Bash, Read, Write, Edit, Grep, Glob, Agent, TaskOutput, TaskStop,
#    Skill, ToolSearch, TaskCreate, TaskGet, TaskUpdate, TaskList,
#    SendMessage). Additive-only: config can ADD tools (e.g. WebSearch,
#    WebFetch, TodoWrite, Workflow, Monitor), never remove core ones.
#    Kind and Instance values merge by UNION. The codex runtime cannot
#    restrict built-ins, hence the `claude:` namespace. Applies when the
#    session's SDK subprocess (re)spawns — typically the next drain.
#    See docs/design/claude-tools-allowlist.md.
#
#    Example:
#    claude:
#      tools: [WebSearch, WebFetch]
---

<!-- KIND DESCRIPTOR (Kind Prompt, optional)
     This file is the Kind Descriptor for channel kind "stdio".
     The Markdown body below becomes the kind-level prompt and is merged with
     each Instance Descriptor (var/channels/<channel_id>/descriptor.md).

     Prompt assembly / merge order (all layers are optional):
       [Identity]        bootstrap/meta-prompt.md (runner append chain source)
       [Kind Prompt]     kernel/config/<kind>.md body  ← this file
       [Instance Prompt] var/channels/<channel_id>/descriptor.md body

     SUPPORTED CONFIG IN THIS FILE
     -----------------------------
     Frontmatter (YAML):
       - new_session_workspace?: string
       - prompt_mode?: "append" | "override"
       - allowedTools?: string[]          (permission auto-approve, not surface)
       - disallowedTools?: string[]       (MCP tools only)
       - additionalDirectories?: string[]
       - claude?: { tools?: string[] }    (extra built-ins ∪ core allowlist)

     Markdown body:
       - Kind Prompt text (optional)

     NOT SUPPORTED HERE (instance-only)
     ----------------------------------
     Do NOT put instance-specific fields here, such as:
       - display_name
       - channel_id
       - channel_kind (implied by filename, e.g. "stdio.md")

     Instance Descriptor fields override Kind Descriptor fields.
     For example, `prompt_mode` and `new_session_workspace` may be set here as
     defaults and overridden per channel instance.

     Leave the body empty (or only comments) to inject no kind prompt.

     EXAMPLE
     -------
     ---
     new_session_workspace: ~/projects/aladuo
     prompt_mode: append
     allowedTools: ["Read", "Edit", "AskUserQuestion"]
     disallowedTools: ["Bash"]
     additionalDirectories: ["~/notes"]
     ---

     You are operating through the stdio channel.
     Keep terminal-first responses concise and actionable.

     OTHER CHANNEL KINDS
     -------------------
     To configure feishu, acp, or any other channel kind, create a file
     at kernel/config/<kind>.md with the same format as this file.
     Example: kernel/config/feishu.md
-->

You are operating through the stdio channel.

This is usually a direct operator session from a terminal or local CLI.
Assume the user wants fast, hands-on progress rather than ceremony.

- Inspect the actual workspace before proposing broad changes.
- Prefer concrete commands, file references, and verified results.
- Keep status updates short and informative while work is ongoing.
- For substantial tasks, carry work through implementation and verification
  instead of stopping at abstract advice.
- If a local repo policy or nearby `CLAUDE.md` changes how work should be done,
  follow it.
