---
title: Default Agent Instructions
---

# Default Agent Instructions

## What it is

Omniscio ships a set of curated instruction presets that are automatically injected
into every Claude Code session you spawn. These protect against common
pitfalls -- AI attribution on commits, accidental cloud resource deletion,
repos created as public -- without you having to configure anything.

## Where to find it

**Settings -> Agent Instructions** (sidebar, under Workflow group).

## How it behaves

1. **Presets** -- Each is a toggle (on/off). Most default to ON:
   - **Remove AI attribution** -- strips "Co-authored-by: Claude" from commits
     and attribution from PRs. Also manages the attribution field in
     `.claude/settings.local.json` (the per-developer override file, never the
     repo's shared `.claude/settings.json`).
   - **Cloud resource safety** -- blocks deletion of Firebase/GCP/AWS resources
     without your explicit approval.
   - **Private repos** -- `gh repo create` always uses `--private`.
   - **Professional README** -- ensures polished READMEs with badges and structure.
   - **Firebase account check** -- verifies the right Firebase account before deploy (default OFF).
   - **Isolate each session in its own git worktree** -- tells agents to make a
     git worktree + branch per session and never commit directly to master/main.
     Claude Code already enforces this via hooks; this carries the same discipline
     to other engines (Codex, Gemini, Cursor) through the synced instructions.
   - **Keep a live to-do checklist** -- tells agents to track their work as a
     to-do checklist via the Task tools, so their progress shows on the Agent
     Board (default OFF).

2. **Custom Instructions** -- Free-form textarea for anything else you want
   injected into every session (e.g. "always use bun", "prefer functional
   components").

3. **Master Toggle** -- Turns the entire feature on/off. Default: ON.

## For agents

### Technical Details

The presets and your custom text ride the **engine system-prompt bundle** — the one
ordered fragment list every engine harness consumes (`default-agent-instructions`). They
therefore reach local Claude, SSH Claude, Codex, Gemini and every other engine
identically, and a future engine gets them automatically. See
`.claude/memory/contracts/engine-prompt-bundle-contract.md` (`every-consumer-spreads-the-whole-bundle`).

**Corrected 2026-09-01.** This page previously claimed Omniscio writes
`.claude/amc-instructions.md` and that "Claude CLI automatically loads all `.md` files
under `.claude/`". That is **false**, and the feature reached no engine at all. A
four-way sentinel probe against a real Claude session (tools disabled, CLI v2.1.170 —
the build Omniscio spawns) reported `CLAUDE.md`, `.claude/CLAUDE.md` and
`.claude/rules/*.md` in context and did **not** report `.claude/amc-instructions.md`;
a non-Claude engine never reads `.claude/` at all. The `## Project Instructions` half (project docs flagged "inject as instruction")
moved to the bundle in the same way, as a `project-instructions` fragment read
BEFORE these presets. `.claude/amc-instructions.md` is therefore no longer a
delivery path for anything; only the attribution management below still does
real work.

For the attribution preset, Omniscio also manages
**`.claude/settings.local.json`** in the project directory, setting
`attribution.commit` and `attribution.pr` to empty strings. Existing fields in
that file are preserved (merge, not overwrite) — including the `permissions`
the Claude CLI stores there when you approve a tool.

**Why the `.local` file, not `.claude/settings.json`** (changed 2026-09-16, bug
85b27cb6). Omniscio used to write the repo's TRACKED `settings.json`, and it
treated "I could not read an existing settings object" as "there is none, so my
key is the whole file". In a reported repo that replaced the committed file
with a two-line stub in 27 of 576 worktrees, deleting a `$schema` and a
`SessionStart` hook. Two triggers produced it: the file being absent (a session
resumed into a workspace that had lost its `.claude/`), and the file being `{}`
(written deliberately for cursor engines).

Writing the gitignored sibling removes the whole class rather than guarding
against it, and it fixes the second reported harm for free: the shared file can
no longer be reformatted either, because it is never written. The CLI merges
`settings.local.json` OVER `settings.json` per key, so a repo's `hooks` keep
applying and only Omniscio's own preference is overridden locally — the
documented purpose of that file. The tracked file is now read-never and
write-never for this module, pinned by a regression test.

The file has a banner comment (`<!-- AMC-DEFAULT-INSTRUCTIONS ...`) so Omniscio
can identify and clean up its own files when the feature is disabled.

**Git tracking:** The `.claude/amc-instructions.md` file is regenerated on
every spawn. You may want to add it to `.gitignore` to keep git status clean,
or leave it tracked so teammates can see what instructions Omniscio injects.

### Relationship to Agent Instructions Sync

**These are different features:**

- **Default Agent Instructions** (this page) -- Omniscio-authored presets injected
  into sessions. Content comes from Omniscio's built-in registry.
- **Agent Instructions Sync** -- mirrors your project's existing CLAUDE.md to
  other tool filenames (.cursorrules, GEMINI.md, etc.). Content comes from
  your own CLAUDE.md.

Both can be enabled simultaneously. The sync feature mirrors whatever is in
the project's CLAUDE.md (which may include the Omniscio-injected file if `.claude/`
is part of the project tree).

### Key Files

| File                                                                                           | Role                                                                  |
| ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `src/shared/agent-instruction-presets.ts`                                                      | Preset registry (ids, categories, instruction text)                   |
| `src/main/services/agent-instructions-injector.ts`                                             | Spawn-time writer (.claude/amc-instructions.md + settings.local.json) |
| `src/main/process/process-manager.ts`                                                          | Calls injector before every spawn                                     |
| `src/renderer/src/features/settings/sections/agent-instructions/AgentInstructionsSettings.tsx` | Settings UI                                                           |
| `src/shared/types.ts`                                                                          | AppSettings fields (defaultAgentInstructions\*)                       |

## Related

The sibling feature is [Agent Instructions Sync](agent-instructions-sync.md), which mirrors your project's own `CLAUDE.md` out to `AGENTS.md`, `.cursorrules`, `GEMINI.md` and the other tool filenames — the reverse direction, from your file to the other engines. The two can run at once, and both reach every engine through the same system-prompt bundle.
