Glossary

A short reference for the concepts that newcomers conflate. Each entry: what they look alike, how they differ, where to read more.

Dispatch, threads, and subagents

Dispatch is the single coordinator thread you type into. Exactly one per session.

A thread (sometimes called a worker thread in code) is a spawned conversation that does the editing. As many as you want. In GIT mode, each one gets its own worktree and branch.

A subagent is a one-shot agent run launched by the Task tool. It has no thread, no UI pane, no message queue. It runs and reports back into the conversation that called it.

See: Dispatch, threads, and subagents, Threads, Tasks.

Tasks, threads, and subagents

Look similar in name, do different things.

A task is an entry in the in-session task list. TaskCreate adds one, TaskList shows them, Dispatch turns plans into tasks automatically. Tasks are bookkeeping.

A thread does the actual editing work. A subagent runs a one-shot focused job. Tasks track; threads and subagents do.

Skills, custom commands, subagents, plugins

Four ways to extend Friday, often confused.

A skill is passive context. The agent loads it automatically (or via /skill). Use for "always think this way" rules.

A custom command is invoked. You type /<name> and the command's body becomes the prompt, with $1, $2, $ARGUMENTS substituted. Inline !`bash` evaluates and gets embedded.

A subagent is delegated work. The Task tool launches one with its own system prompt and tool subset. Use for short, scoped jobs. See Dispatch, threads, and subagents.

A plugin is a marketplace bundle. It can ship any combination of skills, commands, and agents.

See: Skills, Custom commands, Subagents, Plugins.

Approval mode and working style

Two independent axes.

Approval mode controls when Friday asks before running commands. 2x asks every time. 5x runs bash freely but asks before commits and PRs. 10x runs everything.

Working style controls how Friday plans and communicates. Collaborative asks questions and explains its plan. Supervised plans up front, asks once, then executes. Autonomous decides and goes.

You can use any combination. --2x plus Autonomous is fine: Friday will decide aggressively but still ask before each command.

See: Approval modes & permissions, Working style.

GIT mode and Cowboy mode

The top-level mode switch. GIT mode isolates each worker in its own worktree on its own branch and merges via cherry-pick. Cowboy mode drops the isolation: all workers share the orchestrator's directory, no branches, no merge queue.

Friday picks GIT mode automatically if you launch in a git repo. --cowboy (or -c) forces Cowboy. Outside a git repo, Friday falls back to Cowboy.

See: GIT mode and Cowboy mode, Cowboy mode.

Top-level worktree and per-thread worktrees

Both create git worktrees, for different reasons.

The --worktree flag creates a sibling worktree of Friday itself, e.g. myrepo.worktree.20260507-1430/. Useful when you want to run Friday without disturbing your main checkout.

Per-thread worktrees are how Friday isolates worker threads in GIT mode. Each worker gets ~/.friday/workspaces/<session>/threads/<id>/worktree/. You don't manage these directly. They're cleaned up at session end.

See: Worktrees.

Checkpoints and snapshots

Look similar, do different things.

A checkpoint is resumable session state. Friday saves one when you exit (or crash). /load-checkpoint brings back the conversation, threads, and tasks. Stored in ~/.friday/checkpoints/. Capped at 20 newest per repo.

A snapshot is a debug artifact. Friday writes one before and after compression, and at session end. Used for engineering investigation, not for resuming work. Stored in ~/.friday/snapshots/.

See: Checkpoints, File and directory layout.

Task and TaskCreate

Two unrelated tools whose names start the same way.

Task spawns a subagent run. The argument is which agent to run (subagent_type) and what to ask it.

TaskCreate, TaskList, TaskGet, TaskUpdate manage the task list shown by /tasks.

See: Tasks, Subagents.

Dispatch and orchestrator

Same thing. The UI shows Dispatch; that's the term these docs use. The code (and architecture documentation) often says "orchestrator." If you see "orchestrator" in a stack trace or a deep architecture doc, it's the same Dispatch thread you talk to.

Feature branch and base branch

The branch you're on (feature) versus the branch your PR opens against (base). They're separate config entries.

The feature branch is whatever git status says you're on. Threads spawn from it and merge back into it. It updates whenever you git checkout (even via Friday's bash tool).

The base branch is what /base-branch controls. It's the merge target when Friday opens PRs (gh pr create --base <base>) and the reference Friday uses to tell the agent what's already on the current branch (the <branch_context> system-prompt block). It doesn't affect the /diff modal, which only shows uncommitted changes. Defaults to whatever long-lived branch you started Friday from (typically main); per-project default is saveable.

In simple workflows they're "feature on top of main," and you set the base branch once and forget. They diverge for stacked PRs (base = the previous PR's branch) and long-lived release branches.

See: Branches.

agents.md and .fridayrules

Same thing, two file names. Both are project rules read into the system prompt of every Friday session in that repo. agents.md is the current convention, shared with Claude Code, Codex, and others. .fridayrules is the legacy fallback. Use agents.md.

See: agents.md & project rules.