Cogitae Documentation — User Guide for the Native Mac AI Workspace
Cogitae is a native Mac AI workspace built for real work: conversations, files, tools, agents, and automation in one place.
Use this guide to get started quickly, then come back whenever you want to explore more advanced features.
Start Here
If you’re new to Cogitae, this is the fastest path:
- Launch the app and complete setup.
- Connect at least one AI provider or local model.
- Start a conversation and send your first message.
- Add a workspace folder if you want Cogitae to work with local files.
- Come back to this guide for tools, agents, memory, MCP servers, and advanced workflows.
Getting Started
First Launch
The first time you open Cogitae, a short setup flow helps you get ready to chat:
-
Welcome — Enter your license key and click Activate. If you don’t have one yet, click “Continue Without License” to use free-tier features. A link to cogitae.ai is included if you want to purchase a key.
-
API Key Setup — Paste one or more API keys into the text area, one per line. Cogitae can auto-detect several providers from key prefixes, including Anthropic, OpenAI, xAI, and Perplexity. Google and MistralAI keys need to be connected manually. A green checkmark appears next to each provider once the connection succeeds. You can also connect a local AI server, such as Ollama at
http://localhost:11434. API keys are stored in the macOS Keychain and never leave your machine. -
Complete — Click “Start Chatting” to begin. The chat input field is focused automatically.
You can reopen onboarding anytime from Help > Getting Started in App mode.
Supported AI Providers
Cogitae works with major cloud providers as well as local models:
| Provider | Type | Notes |
|---|---|---|
| Anthropic | Cloud | Native Messages API |
| OpenAI | Cloud | Chat Completions + Responses API |
| Cloud | Native Gemini API with context caching | |
| xAI | Cloud | Responses API |
| DeepSeek | Cloud | OpenAI-compatible |
| MistralAI | Cloud | OpenAI-compatible |
| Perplexity | Cloud | OpenAI-compatible with citations |
| OpenRouter | Cloud | OpenAI-compatible multi-model router |
| Custom | Cloud | Any OpenAI-compatible endpoint |
| Llama.cpp | Local | Local server, no API key needed |
| MLX | Local | In-process on Apple Silicon, no server |
Add or remove providers in Preferences > AI. Cloud providers need an API key, local providers need a server URL or local runtime, and each provider needs at least one model.
The Main Window
Two Window Modes
Cogitae offers two window modes, switchable in Preferences > General (takes effect on next launch):
App Mode (default) — A standard macOS window with a title bar, traffic light buttons (close/minimize/zoom), and a Dock icon. Full menu bar with Cogitae, Edit, View, Window, and Help menus. Behaves like any normal macOS application.
HUD Mode — A borderless, floating, semi-transparent overlay window. No title bar, no Dock icon. Instead, a small icon appears in the macOS menu bar (status bar). The window floats above other apps on all Spaces and desktops. Controlled via the status bar icon or keyboard shortcuts.
Window Appearance
All window appearance settings are in Preferences > Appearance and update in real time:
| Setting | Default | What It Does |
|---|---|---|
| Ghost Mode | Off | Makes the window fully transparent with only text and controls visible over the desktop |
| Tint Color | Clear | Overlays a color on top of the blur effect for theming |
| Tint Opacity | 0% | Controls tint color strength (0–100%) |
| Blur Strength | 85% | Controls the vibrancy/blur behind the window (0–100%) |
Window Docking (HUD Mode)
In HUD mode, the window is always docked to a screen edge:
- 8 dock states: top, bottom, left, right, upper-left, upper-right, lower-left, lower-right
- Rounded corners: Only on edges not touching the screen boundary
- Edge-locked dragging: Dragging is constrained to slide along the window’s screen edge only
- Center alignment guides: Yellow crosshair lines appear when the window center aligns with the screen center during drag or resize
- Opening/closing animation: The window unfolds from or folds back to its docked edge over 0.3 seconds
Position, size, and dock state persist across launches. HUD and App modes maintain separate positions.
Hibernation (HUD Mode)
Hibernation is the HUD-mode equivalent of minimizing. The app stays running in the background while the window is hidden.
Enter: Click the status bar icon (when window is open), press the global toggle hotkey, or press Cmd+H (when the app is focused). The window folds into its docked edge. Focus returns to the previous app.
Exit: Click the status bar icon again or press the global toggle hotkey. The window unfolds and the chat input gains focus.
Background activity continues: Agents, remote messaging, relay connections, MCP servers, and notifications all keep running during hibernation.
Conversations
Starting a Conversation
Every conversation begins with an instruction message at the top. This message configures which AI provider to use, the system prompt, which tools are enabled, workspace (folder) permissions, and AI parameters (temperature, max tokens, etc.).
Type your message in the input field at the bottom and press Cmd+Enter. The AI response streams in below your message with a busy spinner. When complete, it renders as rich markdown.
Message Types
| Type | Purpose |
|---|---|
| Instruction | System prompt that configures the AI. Always at the top. Editable. |
| User | Your messages. Editable (creates a branch). |
| AI | AI responses. Rendered as markdown. Editable text (for corrections). |
| Note | User-inserted notes within the conversation. Not sent to the AI. |
| Info | Ephemeral messages (news, usage reports, version info). |
| Collapsed | Compact placeholder for hidden messages. Click to expand. |
Hide from LLM
Each user and AI message has a toolbar that appears below the message content. The leftmost button in the toolbar controls whether the message is included in the LLM’s context.
- User messages: The button shows a user icon. Clicking it hides the user message and its AI response from the LLM context.
- AI messages: The button shows an AI icon. Clicking it hides the AI response and its originating user query from the LLM context.
Messages are always hidden or shown as a pair — you cannot hide a user message without also hiding its response, or vice versa.
Visual indicators: When a message is hidden from the LLM, its toolbar icon dims to 30% opacity. Hovering over the button shows a tooltip indicating the current state (e.g., “User Query (Hidden) - Click to unhide”). Hidden messages also display an eye-slash badge on their node in the conversation graph.
Hidden messages remain fully visible in the conversation view — they are only excluded from the context sent to the AI. This is useful for keeping a clean conversation history while removing irrelevant or sensitive exchanges from the AI’s context window.
Branching
Conversations are trees, not linear chats. Every message can have multiple children (branches). The “active path” from root to leaf is what you see and what gets sent to the AI.
Creating a branch: Edit a user message and submit a different version, or click the branch icon (second from the left) on a user message. The old conversation continues as a branch; the new version becomes the active path. You can also edit an AI message directly by clicking its edit button.
Switching branches: A branch popup appears on parent messages that have multiple children. Click the popup to switch between branches. Branches can also be changed in the table of contents outline and conversation graph.
Branch names: Branches are auto-named from the message summary or first line of content (“Branch N” as fallback). Double-click the branch indicator on a user message to rename it.
The Input Field
The input field at the bottom of the conversation area:
- Grows with content as you type (scrollable)
- Shows a placeholder with the current model name: “Ask [model] anything…”
- Press Cmd+Enter to submit, Enter for a newline
- Press Escape to cancel edit mode
- Voice input: Click the microphone button to dictate (requires speech recognition permission)
Input Toolbar Buttons
| Button | Action |
|---|---|
| Clear | Clear the input field |
| Attachment (paperclip) | Attach files |
| Bookmark | Open the bookmark picker |
| MCP Resource | Browse MCP server resources (visible when MCP servers are connected) |
| MCP Prompt | Browse MCP server prompts (visible when MCP servers are connected) |
| Copy | Copy the input text |
| Note | Insert the contents of the input message into the conversation as a note |
| Mic | Toggle voice input |
| Send / Cancel | Submit message or cancel streaming |
Instruction Message Controls
The instruction message at the top of each conversation has a toolbar (left to right):
| Button | Action |
|---|---|
| Branch | Create a new branch from this instruction |
| Instruction Prompt | Choose a predefined system prompt template |
| Provider | Select which AI provider and model to use |
| AI Parameters | Temperature, max tokens, top-p, top-k, frequency penalty, presence penalty, reasoning effort (provider-dependent visibility) |
| Template | Open the template picker |
| Delete Conversation | Delete the current conversation |
| Attachments | Attach files, images, PDFs, bookmarks, or MCP resources |
| Bookmark | Open the bookmark picker |
| Copy | Copy the instruction prompt text |
| Expand/Collapse | Expand or collapse the instruction message |
The instruction message body above the toolbar contains:
- Attachments: Files, images, PDFs, bookmarks, or MCP resources attached to the instruction.
- Workspace folders: Directories that tools can access. Drag folders onto the instruction view to add them.
- Tool selection: Expandable checkbox list grouped by domain. Enable or disable individual tools or entire domains.
Prompt Templates
Prompt templates let you save and restore the complete state of the instruction message. A template captures:
- Instruction prompt text and which prompt type is selected (e.g. Agentic, Code)
- AI provider and model
- AI parameters — temperature, max tokens, top-p, top-k, penalties, etc.
- Web search settings — domain filters and toggle state
- Attachments — files, images, bookmarks
- Enabled tools and workspace folders
This makes it easy to switch between different configurations — for example, a “Code Review” template with a code-focused prompt, low temperature, and filesystem tools enabled, versus a “Creative Writing” template with a different provider and high temperature.
Creating a template — Open the template picker from the instruction toolbar and click the + button. A new template is created from the current instruction state. The template appears in the list with a default timestamped name; double-click to rename it.
Loading a template — Click a template in the picker and press the load button. All instruction settings are restored: the prompt text, provider, AI parameters, web search settings, attachments (as new copies), and tool selections. A status message confirms what was applied.
Updating a template — Right-click a template and choose Update to overwrite it with the current instruction state. The template name is preserved.
Renaming a template — Right-click a template and choose Rename, or double-click the name. Press Enter to save or Escape to cancel.
Deleting a template — Swipe left on a template row to reveal the delete button.
The template picker supports search, keyboard navigation, and pagination (50 templates per page). Templates can also be dragged onto the instruction view. The maximum number of templates is 50.
Templates are also accessible programmatically via the Template chat tool, which supports list, get, create, apply, and delete actions. Focus Filters can override the default template when a specific Focus is active.
Attachments
Attach files to messages by:
- Clicking the attachment (paperclip) button in the input toolbar
- Dragging files onto the input field or instruction view
- Using MCP resource browser to attach MCP resources
Supported attachment types: audio, files, images, PDFs, bookmarks, and MCP resources. Attachments appear in a strip at the top of the message with icons, labels, and delete/download buttons.
Conversation History
Access conversation history via the View menu, keyboard shortcut, or by clicking in “Search conversations or press enter for full list” and pressing enter.
- Conversations sorted by creation date with month/year section headers
- Inline title editing (click to select, Return to save, Escape to revert)
- Pagination: loads 50 conversations at a time, more on scroll
- Spotlight search integration for filtering
- Swipe left on a row to reveal a delete button
- Drag a conversation row to Finder to export as JSON
Continuation and Summarization
When a conversation grows long, use “Continue Conversation” (or the AI triggers auto-compaction automatically):
- All prior messages collapse visually
- A summary streams in from the AI
- Attachments and tool references are preserved
- The conversation continues from the summary point
Auto-compaction preserves the conversation context for continued use.
Undo
Press Cmd+Z to undo text editing operations in the input field or message editors.
Sidebars
Table of Contents / Conversation Graph (Right Sidebar)
Toggle with Cmd+] or Cmd+2. A segmented control in the header switches between three modes:
Graph mode (default): Visual tree diagram of the conversation structure. Each node represents a message. Right-click a node to bring up a context menu with options including “Scroll to” to navigate to that message. Pan and zoom with trackpad or mouse.
List mode: Hierarchical table of contents showing:
- Messages with icons and first-line previews
- Attachments (indented under their message)
- Markdown blocks: headings, code blocks, tables, images (indented)
- Copy button on each block item
- Branch popups on messages with multiple children
- Bookmark badges on bookmarked items
- Collapsible continuation sections
Click any row to navigate to the corresponding message or block.
Bookmarks mode: Browse all bookmarks across conversations with a Spotlight-powered search field for filtering. Each row shows the bookmark type icon, description, and creation date. Click to navigate to the bookmarked item (switching conversations if needed). Right-click for navigate and delete options or swipe left to reveal a delete button. Drag bookmarks from the list onto a message input to attach them. The list updates automatically when bookmarks are created or deleted anywhere in the app.
Agent Panel (Left Sidebar)
Toggle with Cmd+[ or Cmd+1. Shows live agent activity cards. Auto-expands when an agent spawns.
Each card shows: role name, model, elapsed time, progress bar, phase label, token count, continuation count, last tool called, and result/error text.
Card states:
- Running: Blue dot, progress bar, elapsed time ticking
- Pending: Orange dot, “Waiting…”
- Completed: Green dot, fades to 60% opacity
- Failed: Red dot, error message in red
- Cancelled: Gray dot
Click a running card’s status dot to cancel the agent. Click elsewhere on a card to expand/collapse its details. When a card is expanded, a summary of its status output is shown, below that is a log icon which you can click to show the full status output.
Clear completed button (top-right): Removes all finished agents from the panel.
Find and Search
Cmd+F opens a search panel for the current conversation:
- Live match count as you type
- Case-insensitive matching
- Searches rendered text across all visible messages
- Highlights all matches with yellow background
- Expands collapsed messages containing matches
- Cmd+G: Next match (wraps around)
- Cmd+Shift+G: Previous match
- Cmd+E: Use current selection as search text
- Current match flashes with macOS find indicator
Bookmarks
Bookmarks let you save references to conversations, messages, or specific content blocks (code, tables, etc.). Three types:
| Type | What it saves |
|---|---|
| Conversation | Reference to an entire conversation |
| Message | Reference to a specific message |
| Block | Reference to a specific markdown block within a message |
Access bookmarks in two ways: switch the right sidebar to bookmarks mode (third segment in the segmented control), or open the bookmark picker via the bookmark button in the input toolbar or Cmd+B (App mode). The sidebar bookmarks mode provides an always-visible browser with search, navigation, and drag-and-drop to attach bookmarks to messages.
When navigating to a bookmark, Cogitae loads the conversation (if needed), scrolls smoothly to the target, and highlights it briefly.
Tools
Cogitae has 70+ tools across three categories that the AI can use during conversations.
Native Tools
Stateless file and network operations:
| Tool | Domain | Actions |
|---|---|---|
file |
Filesystem | read, batch_read, write, edit, append, info |
read |
Filesystem | read, info (read-only subset for sub-agents) |
fs |
Filesystem | list, tree, mkdir, copy, move, delete, diff |
search |
Filesystem | glob, grep |
conversion |
Filesystem | pdf_to_markdown |
web |
Network | fetch, fetch_markdown, fetch_raw, request, webhook |
ssh |
Network | list, read, write, search, info, execute |
Chat Tools
Self-aware tools that interact with Cogitae itself. These are organized by category:
Conversation and Messages: conversation (create, delete, switch, search, submit queries, manage workspaces), message (list, search, delete, notes, branches, reparent), bookmark (CRUD, picker, ToC), template (CRUD, apply), instruction_prompt (CRUD)
AI and Configuration: ai_config (switch providers, tune parameters per conversation, get/set model scoring), cost (pricing, estimation, comparison with benchmarks), mlx (local model management on Apple Silicon)
Tool and Plugin Management: tool_config (enable/disable tools per conversation, web search settings), tool_optimizer (session-scoped tool activation), plugin_manager (install, uninstall, search cloud catalog), settings (read/modify application settings)
Agent Orchestration: caesar (multi-agent task orchestration with cost-optimized model selection), agent (event-driven agent CRUD, enable/disable, trigger, history), hippodamus (structured task plans with save/load to markdown files), continue_session (request another AI turn), background_task (non-blocking tool execution)
Specialized Agents (premium): aristotle (hypothesis-driven investigation), newton (knowledge research with source evaluation), davinci (creative cross-domain synthesis), patton (adversarial security review — broad audits auto-decompose into parallel domain sub-agents), sherlock (deep project investigation — broad scopes auto-decompose into parallel module sub-agents), socrates (adversarial reasoning audit)
Memory: memory (store, recall, search, list, delete), internal_memory (scoped working memory with note, recall, search, resolve, pin, promote), memory_admin (premium — stats, embedding management, maintenance, deduplication)
System Integration: calendar (EventKit events), reminders (EventKit reminders), contacts (read-only Contacts access), notification (desktop notifications), clipboard (read/write system clipboard), screenshot (list windows, capture window screenshots for AI analysis), app (macOS app control)
Search: academic_search (academic paper search across multiple sources)
User Interaction: ask_user (request user input during tool execution)
UI and Display: show_file (display file contents in chat), window (window management), dashboard (dashboard display)
Export: import_export (conversation export in markdown, Obsidian, or JSON format)
Security: access (check, request, list, revoke directory permissions), secrets (manage Keychain-stored secrets for tool use), exec (locate and run system commands with scoped permissions)
Diagnostics: debugger (inspect agent logs, tool call history, query lifecycle, and debug sessions), status (status bar history)
MCP: mcp (MCP server management)
Execution: wait (timed delay during tool execution), random (random pick from array, random integer, random float)
External Plugins
Loadable plugin bundles that extend Cogitae’s capabilities:
| Plugin | Tool | What It Does |
|---|---|---|
| AppleScriptPlugin | applescript |
Run AppleScript with permission management |
| ImageGenerationPlugin | image_generation |
Generate/edit images via OpenAI, Google, or xAI |
| MaintenancePlugin | (23 tools) | System cleanup, disk usage, startup services, privacy |
| PluginBuilderPlugin | plugin_builder |
Create, compile, and manage custom plugins |
| EmbeddingsPlugin | embeddings |
Generate, store, and search vector embeddings |
| PostgresPlugin | postgres |
PostgreSQL database operations |
| SQLitePlugin | sqlite |
SQLite database operations |
Manage plugins in Preferences > Plugins. Install additional plugins from the cloud catalog or build your own with PluginBuilderPlugin.
Tool Confirmation
Tools have risk levels that determine whether user confirmation is needed:
| Risk | Behavior |
|---|---|
| Safe / Low | Executes without asking |
| Moderate | May ask for confirmation depending on settings |
| High / Destructive | Always asks before executing |
Confirmation appears as a dialog or desktop notification (for interactive sessions). For headless agents, operations within the agent’s configured workspace are automatically allowed regardless of risk level — the workspace is the security boundary. Operations targeting paths outside the workspace are denied.
Agents
What Are Agents?
Agents are event-driven automations. Each agent binds a system event (timer, file change, clipboard change, etc.) to AI behavior. When the event fires, Cogitae runs a headless AI session using the agent’s configured tools and prompt — no user interaction required.
Event Sources
| Source | What It Monitors |
|---|---|
| Timer | Scheduled intervals or times (“every 30m”, “at 09:00”, “weekdays at 17:00”) |
| FileSystem | File/folder changes (create, modify, delete, rename) |
| Clipboard | Clipboard content changes |
| Calendar | Upcoming, started, or ended calendar events |
| Network | Connectivity, interface, and constraint changes |
| AppLifecycle | App launches, terminations, activations |
| Workspace | File additions, build artifacts, git status changes |
| AgentLifecycle | Other agents completing, failing, or spawning |
| Custom | Triggered programmatically or manually |
Action Policies
Each agent has a policy that controls what happens when it triggers:
| Policy | Behavior |
|---|---|
| Notify Only | Run the AI and send a notification with results |
| Ask First | Propose the action and wait for user approval (desktop notification with Approve/Dismiss) |
| Act Silently | Execute without any UI |
| Act and Notify | Execute and send a notification with results |
Configuring Agents
Open Preferences > Agents to manage agents.
Creating an agent: Click “Add Agent”, fill in the name, select an event source, configure the event filter (path patterns for filesystem, schedule for timer, etc.), write an inline prompt, select action policy, and choose which tools the agent can use. You can also import agents from JSON files using the paste or import buttons next to “Add Agent”, or by dropping a .json file onto the agent list.
Exporting an agent: Click the download icon in the editor to save the agent as a JSON file. You can also drag an agent row from the list directly into a Finder folder. Exported agents use the model name instead of internal IDs, so they work when shared with other users.
Importing an agent: Use the paste button (pencil icon) to paste agent JSON, the import button (arrow icon) to open a file picker, or drag a .json file onto the agent list. If the agent specifies a model name, Cogitae automatically matches it to a local provider.
Agent settings:
- Token budget (max tokens per activation, default 10,000)
- Cooldown (minimum seconds between activations, default 60)
- Max activations per hour (default 10)
- Max continuations (auto-continuation limit, default 3)
- Active hours (restrict to specific times and days)
- Provider and model override
- Workspace paths (restrict tool file access). Workspace paths also serve as the security boundary: headless agents can perform any file/fs operation within their workspace without confirmation, but operations outside the workspace are denied.
- Approved executables (pre-approve binaries the agent can run via the
exectool without needing a dialog). Since headless agents cannot show approval dialogs, executables must be pre-approved here or configured as globals in Preferences > Security.
Enable/disable: Toggle the switch on any agent row without opening the editor.
Monitoring Agents
Live agent activity appears in the Agent Panel (left sidebar, toggle with Cmd+[ or Cmd+1). See the Agent Panel section for details.
Agent activation history is available via the agent tool’s history action or in the agent card’s expanded detail section.
Specialized Agents (Premium)
Five named agent personas can be spawned during conversations via their respective tools:
| Agent | Role |
|---|---|
| Aristotle | Hypothesis-driven problem investigation |
| Newton | Knowledge research with source quality evaluation |
| Da Vinci | Creative cross-domain synthesis |
| Patton | Adversarial security review (broad audits auto-decompose into parallel domain sub-agents) |
| Sherlock | Deep project investigation (broad scopes auto-decompose into parallel module sub-agents) |
| Socrates | Adversarial reasoning audit (critiques other agents) |
These follow a spawn/result pattern: spawn returns immediately with an agent ID; result blocks until the agent completes. Progress is visible in the Agent Panel. For broad-scope audits and investigations, Patton and Sherlock automatically decompose the work into parallel sub-agents — no manual orchestration needed.
Sub-Agent Orchestration
The caesar tool orchestrates multiple sub-agents with:
- Cost-optimized model selection by task type
- Dependency resolution between agents
- Token budget management
- Rate limit fallback (automatically switches providers on 429/529 errors)
Memory
What Is Memory?
Cogitae maintains persistent semantic memory across conversations. The AI can store facts, preferences, lessons, and project context, then recall them in future conversations.
Memory Categories
| Category | Purpose |
|---|---|
| preference | User preferences and workflow choices |
| fact | Factual information about the user or their work |
| project | Project-specific context |
| lesson | Lessons learned from past interactions |
| general | Uncategorized memories |
How Memory Works
- Storage: The AI stores memories via the
memorytool with kebab-case keys and content up to 2,000 characters - Retrieval: Semantic search using vector embeddings (cosine similarity) or full-text search (FTS5) as fallback
- Injection: Relevant memories are automatically injected into the system prompt at the start of each conversation turn
- Profile memories: Memories flagged as profile are always injected regardless of relevance
- Explicit storage: Only memories explicitly stored via the
memorytool are written to the database
Internal Memory
Internal memory is a separate, temporary working memory used by tools and agents. Unlike the main memory system (which is durable and cross-conversation), internal memories are scoped and expire automatically.
Use cases:
- Working notes and intermediate findings during multi-step tasks
- Hypotheses being tested
- Execution state between tool calls
- Coordination notes between agents
- Temporary results from analysis
Scoping: Internal memories are scoped to a conversation, agent session, workspace, or project. Tools and agents can read each other’s memories using scope and source filters, enabling cross-tool and cross-agent coordination.
Actions: note (store), recall (retrieve), search (full-text), resolve (mark done), pin (prevent expiry), promote (elevate to durable memory).
Promotion: Use the “promote” action to elevate an important finding from internal memory to the main durable memory store, making it available across conversations.
Memory Maintenance
Cogitae runs daily maintenance on the memory store:
- Decay: Unused memories lose relevance over time
- Consolidation: Similar memories are merged
- Archival: Low-scoring memories are removed
- Zombie cleanup and expired memory removal
Configure memory settings in Preferences > Memory:
- Toggle memory injection on/off
The Launcher
A Spotlight-style floating panel for quick one-shot AI queries without opening the main window.
Opening the Launcher
Three global hotkeys (configurable in Preferences > Behavior):
| Hotkey | Default | Action |
|---|---|---|
| App toggle | Option+Space | Show/hide the main Cogitae window |
| Launcher | Shift+Option+Space | Open/close the launcher panel |
| Inline text | Cmd+Shift+Space | Copy selected text from any app, open launcher with that text as context |
These work from any application, even when Cogitae is not in the foreground.
Using the Launcher
- Press the launcher hotkey (default Shift+Option+Space)
- The panel appears in the upper third of the screen
- Type your question and press Enter
- A spinner appears while the AI generates a response
- The full response appears rendered as markdown
Bottom bar (after response): Shows token count, “Open in Cogitae” button (transfers the conversation to the main window), and in inline text mode, a “Copy & Paste Back” button.
Dismiss: Press Escape, click outside the panel, or press the launcher hotkey again.
Inline Text Mode
- Select text in any application
- Press Cmd+Shift+Space (or configured hotkey)
- Cogitae captures the selection (requires Accessibility permission)
- The launcher opens with the captured text shown as context
- Type an instruction (“Summarize this”, “Translate to French”, etc.)
- The AI receives the captured text + your instruction
- Use “Copy & Paste Back” to paste the response back into the original application
MCP (Model Context Protocol)
Connecting to MCP Servers
Cogitae can connect to external MCP servers that provide additional tools, resources, and prompts.
In Preferences > MCP Servers:
- Click “Add” to configure a new server
- Choose transport: HTTP or stdio (local process)
- For HTTP: enter the server URL
- For stdio: enter the command and arguments
- Configure environment variables and headers as needed
- Click “Test Connection” to verify
- Enable auto-discovery for tools, resources, and prompts
Connection status shows as a colored dot: green (connected), yellow (connecting), gray (disconnected), red (error).
Cogitae supports importing server configurations from Claude Desktop JSON format. You can also drag a .json file onto the server list to import it, or drag a server row from the list to Finder to export it. The server editor has an export button (download icon) to save the current server as a Claude Desktop-compatible JSON file.
Embedded MCP Server
Cogitae itself can act as an MCP server, exposing all of its tools, conversations, and instruction prompts to external MCP clients. This includes chat tools, native tools (file, search, web, SSH, etc.), and any installed external plugin tools.
Enable in Preferences > MCP Servers. Default port: 52532. The server supports both HTTP and JSON-RPC protocols (auto-detected from first byte).
Using MCP Resources and Prompts
When MCP servers are connected:
- MCP resource and prompt buttons appear in the input toolbar
- Click the resource button to browse and attach MCP resources
- Click the prompt button to browse and insert MCP prompts (with argument fields if required)
Markdown Rendering
AI responses are rendered as rich markdown with:
- Headings (h1–h3, deeper levels rendered as h3)
- Code blocks with syntax highlighting (5 display styles: plain, diff, syntax highlighting, diff highlighting, combined)
- Tables (grid view or as charts: bar, pie, point, line, area)
- LaTeX math (inline and display, rendered natively via SwiftMath)
- Mermaid diagrams (rendered via embedded Mermaid engine)
- Interactive checklists (click checkboxes to toggle)
- Footnotes with superscript identifiers
- Images from attachments, file URLs, or remote URLs
- Internal links for cross-referencing within conversations
AI-Generated Block Summaries
Rendered blocks are automatically summarized by the AI and displayed as tooltips. Hover over a block to see its summary. For example, a LaTeX equation might show “Einstein’s mass-energy equivalence” or “The quadratic formula”. Block types that receive AI-generated summaries:
- LaTeX equations — what the equation represents
- Tables — what the data describes
- Lists and checklists — the purpose or topic of the list
- Block quotes — what is being quoted
- Code snippets — what the code does (full files are identified by filename instead)
Summaries are generated once and persisted, so they don’t re-run on subsequent views of the same content.
Block Toolbars
Each rendered block has a toolbar with buttons for:
- Copy: Copy block content to clipboard
- Bookmark: Save a bookmark to this block
- Save: Export block to file (NSSavePanel)
- Download: Download images
- Zoom: Adjust display scale (0.25x to 1.0x)
- Collapse: Toggle block visibility
Code blocks have style popups (plain, diff, syntax, etc.). Table blocks have style popups (table, CSV, bar chart, pie chart, etc.).
Toolbar visibility is configured in Preferences > Markdown. Four styles are available:
| Style | Behavior |
|---|---|
| Always Off | Toolbars are never shown |
| Always On | Toolbars are always visible on every block |
| On Hover | Toolbars appear when you hover over a block |
| On Swipe | Toolbars appear on horizontal swipe gesture |
Drag and Drop
Drag markdown blocks out of the conversation:
- Code blocks: dragged as text
- Tables: dragged as text/HTML
- Images and Mermaid diagrams: dragged as image files
- Mermaid diagrams also include the code fence text
Security and Permissions
Cogitae uses a layered security model built on macOS sandboxing. Every tool operation is gated by workspace permissions, executable permissions, or secret redaction. Permissions are scoped to prevent cross-context access leaks.
Workspace Permissions
Workspace permissions control which directories the AI and its tools can access on your filesystem.
Granting access: Add workspace folders to a conversation by dragging them onto the instruction message, clicking the Attachments button, or when the AI requests access via the access tool (which presents a folder picker). The selected folder and all its subdirectories become accessible.
Scope: Each permission is owned by a specific context:
| Scope | Visible To |
|---|---|
| Conversation | Only that conversation |
| Agent | Only that agent |
| All Conversations | Any conversation |
| All Agents | Any agent |
| Global | Everything |
| App | Internal app directories (e.g., ~/.cogitae/) |
A conversation cannot see another conversation’s workspace folders. An agent cannot see a conversation’s folders unless they were granted at a broader scope.
Under the hood: Workspace permissions use macOS security-scoped bookmarks. The app resolves bookmarks at access time and automatically detects stale bookmarks (e.g., if a folder was moved or renamed).
Cleanup: When a conversation or agent is deleted, all its scoped permissions are automatically removed.
Global Workspaces
Global workspaces are directories that are automatically available to every conversation and agent. They are managed in Preferences > Security > Global Workspaces.
Adding workspaces: Use the add (+) button to browse for directories, or drag and drop folders directly onto the Global Workspaces section. Multiple directories can be selected at once.
How they work: Global workspace paths are merged with any per-conversation workspaces. Conversation-specific workspaces take priority (listed first), followed by globals. The AI sees all of them in the Available Workspaces section of the system prompt.
Limits: Up to 20 global workspaces can be configured.
Removing: Swipe left on any workspace row to reveal a delete button, or use the standard macOS swipe-to-delete gesture.
Use case: If you frequently work in the same project directories, adding them as global workspaces saves you from re-adding them to every new conversation.
Executable Permissions
The exec tool allows the AI to run shell commands. Every executable requires explicit user approval before first use.
Approval flow:
- The AI requests to run a command (e.g.,
git status) - Cogitae resolves the executable path (e.g.,
/usr/bin/git) - If not previously approved, an approval dialog appears with scope options:
- This conversation/agent only
- All conversations/agents
- Global (all contexts)
- Approving a directory (e.g.,
/opt/homebrew/bin/) covers all executables within it
Inheritance chain: When checking executable access, Cogitae walks from most specific to most general:
- For conversations: conversation → all conversations → global
- For agents: agent → all agents → global
Headless agents: Event-driven agents run without a UI, so they cannot show approval dialogs. Agents can only use executables that were pre-approved at a scope visible to them (agent, all agents, or global). If an agent tries to run an unapproved executable, the tool call fails.
Stored parameters: Approved executables can have default arguments and environment variables stored with the permission. These are prepended/merged with whatever the AI provides at runtime.
Output redaction: Sensitive environment variables (matching patterns like KEY, TOKEN, SECRET, PASSWORD) are automatically redacted from command output before the AI sees them.
Managing globals: Global executables can be managed in Preferences > Security > Global Executables. You can add executables by browsing, typing a path, or dragging executable files onto the section. Each global executable can be temporarily disabled without removing it, and can have default parameters and environment variables configured.
Secrets
Secrets (API keys, database passwords, tokens) are stored in the macOS Keychain and managed through Preferences > Security.
Key principle: The AI never sees secret values. It only sees secret names. At execution time, tools resolve secret references using the template syntax {{secret:my-api-key}}.
Sensitive content detection: When a tool result contains a value that looks like a secret (matching key names like API_KEY, TOKEN, PASSWORD) but is not already in the secrets store, a dialog appears:
- Add to Secrets — Stores the value in the Keychain
- Allow Access — Session-only access (resets on app relaunch)
- Redact — Hides the value from the AI immediately
Agent access: Headless agents can read secrets via templates but cannot create or modify secrets (no UI for confirmation).
Permission Inheritance
Permissions flow from conversations to their tools and agents, and from agents to their tools:
Conversations → Tools:
- Workspace folders granted to a conversation are available to all tools within that conversation
- Executable approvals scoped to a conversation apply to all tool calls in that conversation
- Secrets are resolved at tool execution time using
{{secret:key}}templates
Conversations → Agents → Tools:
- Agents spawned from a conversation inherit the conversation’s workspace paths
- Agents can also have their own scoped permissions (agent, all agents, or global)
- Tools within an agent inherit the agent’s combined permissions
- Agents cannot grant permissions beyond what is visible to them
Interactive conversations can request new workspace folders (folder picker dialog), approve new executables (approval dialog), and create or modify secrets.
Event-driven agents cannot request new permissions (no UI). They rely on pre-approved executables and pre-granted workspace folders at a scope visible to them (agent, all agents, or global). They can read secrets via templates but cannot modify them.
Sub-agents (spawned by the Caesar tool) inherit the parent agent’s workspace paths. Their tool access is filtered to only tools enabled in the parent conversation, and they cannot grant permissions not available to the parent.
On deletion: All scoped permissions are cleaned up automatically when a conversation or agent is deleted. Global and “all conversations/agents” permissions persist.
Network Security
Web requests made by tools and markdown image loading block access to private and internal network addresses to prevent SSRF (Server-Side Request Forgery) attacks. Blocked ranges include localhost, LAN addresses (10.x, 172.16-31.x, 192.168.x), link-local addresses (including cloud metadata endpoints), and multicast. This applies to the web tool, webhook actions, and remote images in rendered markdown. Redirect targets are also validated — a redirect from an external URL to an internal address is blocked.
Preferences
Open Preferences with Cmd+, (or status bar > Preferences in HUD mode).
Sections
| Section | What You Configure |
|---|---|
| Appearance | Ghost mode, tint color/opacity, blur strength, app mode |
| Behavior | Global hotkeys (3 independent recorders), voice input |
| Markdown | Toolbar style, per-element fonts, syntax themes, cache |
| AI | Provider list (add/edit/delete), instruction prompts, summarization/embedding/iOS provider, extended agent model pool |
| MCP Servers | Embedded server, external server list, connection status |
| Tool Settings | Tool context optimizer, per-tool configuration, system integrations (Finder, Calendar, Screen Recording) |
| Plugins | Installed plugins, cloud plugin catalog, install/uninstall |
| Agents | Agent list, global limits (budget, max agents, timeout), agent editor |
| Memory | Injection settings, memory browser, health dashboard |
| Security | Keychain-stored secrets for tool use (key/value/description) |
| Account | License key, tier status, device list |
| About | Version, build date, acknowledgements |
Appearance
- Ghost mode: Makes the window fully transparent with only text and controls visible
- Tint color: Color picker for window tint overlay
- Tint opacity: Slider (0–100%) for tint strength
- Blur strength: Slider (0–100%) for the vibrancy/blur behind the window
Behavior
- App mode: Switch between HUD mode (floating, status bar) and App mode (standard window, Dock icon)
- Global hotkeys: Three independent hotkey recorders — app toggle, launcher, inline text
- Network sleep: Keep network connections alive during system sleep for iOS companion access
- Notifications: Send system notifications when hibernating
- Debug logging: Enable self-debugging database logging (see Debugging)
Markdown
- Toolbar style: Controls toolbar visibility behavior
- Element styles: Per-element font and size customization (text, headings, code, etc.)
- Code syntax theme: Dropdown selector for syntax highlighting theme
- Clear markdown cache: Purge the rendered markdown cache
AI
- Token usage: Table showing input/output tokens and cost per provider, with a clear button
- Providers/Models: List of configured AI providers — add, edit, or delete
- Summarization AI: Provider used for auto-summarization
- Default iOS AI: Provider used by the iOS companion app
- Embedding AI: Provider used for memory and plugin embeddings. Changing this re-embeds existing memories and plugin collections
- Extended agent model pool: Allow agents access to all available models
- Instruction prompts: Manage system prompt templates — add custom, reload defaults. Built-in presets:
- None — no system prompt
- Agentic — permission-aware autonomous agent with tool discovery and auto-confirmation
- Code — hands-on coding with epistemic discipline, direct execution, and minimal output
- Cogitae Debugging — structured self-diagnosis using the
debuggertool (agent logs, tool history, query lifecycle, debug sessions/events) and optionalsqliteaccess to Cogitae’s databases. Enforces evidence-before-conclusions: the AI must consult diagnostic tools before reporting findings. Guides the user to enable debug logging in Preferences > Behavior if no data is available - Documentation — documentation specialist for technical references and user-facing guides
- Learning — teaches as it works, explaining trade-offs, patterns, and subtleties inline
- Marketing — multi-agent marketing orchestrator using sub-agents for research, strategy, and copywriting
AI Provider Editor
When adding or editing a provider in Preferences > AI:
- Name: Display name for the provider
- Type: Provider type (Anthropic, OpenAI, Google, etc.)
- API Key: Stored in macOS Keychain (secure text field)
- Model: The model name to use
- Endpoint: API endpoint URL (auto-configured for cloud providers)
- System prompt: Default system prompt for this provider
- Parameters: Temperature, max tokens, top-p, top-k, penalties (visibility depends on provider type)
- Stop sequences: Add custom stop sequences
- Custom scoring (Llama.cpp/Custom only): Intelligence score, cost, speed, context window for model selection
Keyboard: Escape to cancel, Cmd+Enter to save.
Usage Report
The usage report shows a detailed cost and token breakdown:
- Per-message input/output token counts
- Session totals aggregated by provider
- Estimated cost with cache savings percentage
- Cache performance statistics
- Agent usage breakdown (if agents were used)
MCP Servers
- Embedded MCP server: Toggle to enable the built-in MCP server, with configurable TCP port (0 = auto-assign) and status display
- External MCP servers: List of configured external servers with connection status
- Add server: Manually add an external MCP server
- Paste server: Paste a JSON server configuration
- Upload server: Import server configuration from file
Tool Settings
- Tool context optimizer: Toggle to intelligently enable only relevant tools per query, reducing token usage
- Integrations: Status and setup for Finder Integration (FinderSync extension), Calendar Integration (EventKit access), and Screen Recording (required for the screenshot tool)
- Per-tool configuration: Collapsible domains with individual tool settings editors
Plugins
- Installed plugins: List with version info, update availability, and release notes
- Available plugins: Catalog of downloadable plugins
- Refresh: Check for plugin updates
- Install/Update: Per-plugin download buttons
Agents
- Agent list: View and manage configured agents
- Global limits: Budget cap, max concurrent agents, timeout
- Agent editor: Create or edit agent configurations
Memory
- Inject memories into system prompt: Toggle memory injection on/off
- Memory browser: Searchable table showing key, category, source, access count, injection count, and age — with promote and delete buttons
- Health dashboard: Hit rate, zombie count, database size, last maintenance date, top memories, and at-risk memories
Secrets
Store secrets in Preferences > Security for tools that need credentials (database passwords, API tokens, SSH keys, etc.). Secrets are stored in the macOS Keychain and can be referenced by tools via the secrets tool. Secret values are never exposed to the AI — only secret names are visible.
Sensitive content detection: When a tool result contains a value that looks like a secret (matching key names like API_KEY, TOKEN, PASSWORD) but is not already in the secrets store, a dialog appears with three options:
- Add to Secrets — Saves the value to the Keychain under the detected key name so it is properly managed and redacted going forward
- Allow Access — Lets the AI see the value for the remainder of this session without storing it
- Redact — Hides the value from the AI immediately
This prevents the AI from being blocked by false-positive secret detection while still protecting genuinely sensitive values. The “Allow Access” choice is remembered for the session and resets when you relaunch the app.
Account
- License key: Secure text field with Activate/Deactivate buttons
- Refresh license info: Force server validation of current license
- Tier: Displays current license tier (Free, Trial, Paid)
- Status: Activation status (Active, Limited, Not activated)
- Expires: License expiration or trial end date
- Upgrade/Purchase: Buttons for trial-to-paid or free-to-paid upgrade
- Active devices: List of licensed devices with device info and revocation controls
About
- Version: Version number and build number
- Build date: Compile date
- Reveal data folder in Finder: Opens the ~/.cogitae/ directory
- Acknowledgements: List of third-party libraries with links
iOS Companion App
Cogitae has an iOS companion app that acts as a thin client — no AI runs on the iOS device. All AI processing happens on your Mac.
Connecting
The iOS app discovers your Mac via two methods:
- LAN (Bonjour): Automatic discovery on the same network. No setup required.
- WAN (Relay): Through the Cogitae relay server with end-to-end encryption (Curve25519 ECDH + AES-256-GCM). Enable in Preferences > Remote Access on the Mac.
If both are available, the app uses both simultaneously (the Mac deduplicates messages).
Network Sleep Behavior
By default, Cogitae keeps network connections alive when the system goes to sleep, allowing the iOS companion app to reach your Mac even while the display is off. This uses a process activity assertion to prevent idle system sleep from suspending the relay and Bonjour connections.
To disable this, uncheck Keep network connection when system is sleeping in Preferences > Behavior > Network. When disabled, the Mac will sleep normally and network connections will drop until the system wakes.
Features
- Conversations: Browse Mac conversations with search filtering, create new ones, send messages, view responses
- Branch navigation: View and select conversation branches
- Agent dashboard: View, start, stop, and run agents on any connected Mac
- Agent questions: Answer agent
ask_userquestions remotely - Push notifications: Silent push for background message delivery
- Multi-Mac: Tab-per-Mac interface for managing multiple Macs
License Sync
The iOS app syncs your license from the Mac via iCloud Key-Value Storage. The Mac writes the license token; the iOS app reads and activates it.
Finder Integration
The FinderSync extension adds a Cogitae submenu to Finder’s right-click context menu:
| Menu Item | Action |
|---|---|
| Watch with Agent… | Opens Cogitae’s agent editor with the selected path |
| Run Agent on This… | Submenu listing enabled agents to run |
| Add to Watched Paths | Submenu listing file system agents to add the path to |
| Remove from Watched Paths | Submenu listing agents currently watching the path |
Enable in Preferences > Tool Settings > Integrations, or in System Settings > Privacy & Security > Extensions > Cogitae.
Shortcuts and Siri
Cogitae provides 18 App Intents for Shortcuts, Siri, and Spotlight:
AI Intents
| Intent | What It Does |
|---|---|
| Ask Cogitae | One-shot AI query with optional template and provider |
| Continue Conversation | Send a follow-up to an existing conversation |
| Branch and Ask | Create a branch in a conversation and ask a question |
| Compare Providers | Ask the same question to multiple providers |
| Pipeline | Process input through a template (for automation chains) |
| Run Agentic Task | Multi-turn agentic task with tool use |
| Summarize Clipboard | Summarize clipboard contents |
Data Intents
| Intent | What It Does |
|---|---|
| Search Conversations | Search conversations by keyword |
| Export Conversation | Export as markdown, Obsidian, or JSON |
| Store Memory | Store a memory with key and content |
| Search Memory | Search memories by query |
| Create Conversation | Create a new conversation |
| Add Note | Add a note to a conversation |
| Get Last Response | Get the most recent AI response |
UI Intents
| Intent | What It Does |
|---|---|
| Open Conversation | Open a specific conversation in Cogitae |
| Toggle HUD | Show or hide the window |
| Set Dock State | Change the window’s dock position |
| Open Workspace | Open or create a workspace conversation |
Focus Filters
Cogitae supports macOS Focus Filters, allowing you to override the default provider, template, instruction prompt, ghost mode, and tool optimizer when a specific Focus is active.
macOS Services
Three services available from any app’s Services menu:
| Service | Input | Action |
|---|---|---|
| Run Cogitae Agent… | Selected files | Opens agent editor with the file path |
| Analyze with Cogitae | Selected text | Puts the text into the chat input |
| Watch with Cogitae… | Selected files | Opens agent editor with the file path |
URL Scheme
Other apps can trigger Cogitae via the cogitae:// URL scheme. URLs
use a generic tool dispatch format:
cogitae://<tool_name>/<action>?param1=value1¶m2=value2.
The host maps to the chat tool name, the first path component is the
action, and query parameters become tool arguments. This provides
URL-scheme access to all 51 registered chat tools.
| URL | Action |
|---|---|
cogitae://conversation/list?limit=5 |
List recent conversations |
cogitae://conversation/create?prompt=Hello |
Create a conversation with a prompt |
cogitae://agent/trigger?agent_id=UUID |
Trigger an agent by UUID |
cogitae://window/show_panel?panel=agents&prefill_path=/path |
Open agent editor with path |
cogitae://notification/speak?message=Hello |
Speak a message |
cogitae://notification/sound?sound=Glass |
Play a system sound |
cogitae://status/post?message=Hello&category=info |
Post a status notification |
cogitae://settings/list?category=general |
List settings |
cogitae://bookmark/list |
List bookmarks |
cogitae://cost/model_price?model=claude-opus-4-6 |
Get model pricing |
cogitae://memory/store?key=foo&content=bar |
Store a memory |
cogitae://app/info |
Get app info |
x-callback-url Support
Callers can include x-success and/or x-error query parameters to
receive results via callback URLs:
cogitae://conversation/list?limit=3&x-success=myapp%3A%2F%2Fhandle-result
On success, Cogitae opens: myapp://handle-result?result=<url-encoded-result>
On error: myapp://handle-error?errorMessage=<url-encoded-error>
Without callbacks, results are posted to the status notification feed.
Chaining example — run app/info, then post the result as a status
notification:
cogitae://app/info?x-success=cogitae%3A%2F%2Fstatus%2Fpost%3Fmessage%3Dcallback-success%26category%3Dsuccess
Status Bar
The status strip at the bottom of the window provides:
Activity Dot
A colored circle showing current state:
- Green: Idle
- Blue (pulsing): Thinking or streaming
- Orange (pulsing): Tool executing
- Purple (pulsing): Agent running
- Red (pulsing): Error
Token and Cost Display
Right side shows cumulative tokens and estimated cost for the current conversation (e.g., “847 tokens / $0.0012”). Updates in real time during streaming.
Notification Badge
Red badge on the right shows unread notification count (hidden when zero, caps at “99+”).
Notification Feed
Click the status strip to open the notification feed panel. Shows all recent events with category icons, timestamps, and messages:
- Green checkmark: Success
- Gray info circle: Information
- Yellow warning triangle: Warning
- Red X circle: Error
- Purple CPU: Agent activity
- Orange hammer: Tool execution
Click a notification with details to expand it (up to 3 lines of detail text). Opening the feed marks all notifications as read.
Keyboard Shortcuts
Global (work from any app)
| Shortcut | Action |
|---|---|
| Option+Space (default) | Toggle main window |
| Shift+Option+Space (default) | Toggle launcher |
| Cmd+Shift+Space (default) | Inline text capture + launcher |
When Cogitae Is Active
| Shortcut | Action |
|---|---|
| Cmd+H | Hibernate (HUD) or Hide (App) |
| Cmd+, | Open Preferences |
| Cmd+[ or Cmd+1 | Toggle Agent Panel |
| Cmd+] or Cmd+2 | Toggle ToC Sidebar |
| Cmd+Enter | Submit message |
| Enter | Insert newline |
| Cmd+Z | Undo last message pair |
| Cmd+F | Find in conversation |
| Cmd+G | Find next |
| Cmd+Shift+G | Find previous |
| Cmd+E | Use selection for find |
| Escape | Cancel / dismiss |
| Cmd+Return | Accept edit |
App Mode Only (View Menu)
| Shortcut | Action |
|---|---|
| Cmd+B | Bookmarks |
| Cmd+T | System Prompt Templates |
| Cmd+O | Tools |
Data Storage
All data is stored locally on your Mac:
| Data | Location |
|---|---|
| Conversations, models, settings | SwiftData store in Application Support |
| Agent definitions and activations | agents.db (SQLite, App Group container) |
| Persistent memories | memory.db (SQLite) |
| Model pricing cache | pricing.db (SQLite) |
| Tool call records | toolcalls.db (SQLite) |
| Query history | queryhistory.db (SQLite) |
| Security-scoped bookmarks | access_store.db (SQLite) |
| API keys | macOS Keychain |
| Secrets | macOS Keychain |
| Plugins | ~/Library/Application Support/{bundleID}/Plugins/ |
| Agent scripts/data | ~/.cogitae/ (inside sandbox container) |
| MCP server port file | /tmp/us.bitarts.cogitae.mcp-server.port |
There are no remote databases. Everything stays on your machine.
License System
Cogitae uses a license-key-only authentication model (no user accounts or passwords).
License Types
| Type | Duration | Devices | Access |
|---|---|---|---|
| Free | Forever | 1 | Standard tools only, WAN relay subscription only |
| Trial | 14 days | 3 | All plugins and free WAN relay for trial period, then drops to free mode |
| Paid | Lifetime | 3 | All plugins forever, free month of WAN relay for iOS connectivity |
License Key Format
CGTA-XXXX-XXXX-XXXX-XXXX
Debugging
Cogitae has a built-in self-debugging system that logs detailed information about conversations, tool calls, agent operations, and query lifecycles to SQLite databases. This gives the AI deep insight into how things ran, what went wrong, and where.
Agent Logging
Agent logging is on by default and is managed separately from debug logging. To configure it:
- Open Preferences > Agents
- Under “Agent Logging”, toggle Enable agent logging
The setting takes effect immediately. Disabling it erases the agent log database immediately.
| Database | What It Records |
|---|---|
| AgentLogStore | Agent operations — tool calls, plan transitions, memory ops, continuations, errors, coordinator events |
Debug Logging
Debug logging is off by default because it uses disk space. To enable it:
- Open Preferences > Behavior
- Under “Debug Info”, check Enable self-debugging database logging
The setting takes effect immediately — no restart is required. Disabling the setting erases all debugging databases immediately.
When enabled, three databases are populated:
| Database | What It Records |
|---|---|
| ToolCallStore | Every tool invocation — tool name, parameters, results, timing, conversation ID |
| QueryHistoryStore | AI query lifecycle — provider, model, token usage, latency, errors |
| DebugSessionStore | Debug sessions and their events — groups related operations into browsable sessions |
All debug and agent log data is automatically cleaned up after 7 days.
The Debugger Tool
The debugger tool lets the AI inspect its own operational history. It supports five actions:
| Action | What It Returns |
|---|---|
get_agent_log |
Agent log entries, filterable by category (Tool Call, Plan Transition, Memory Op, Continuation, Background Task, Ask User, Confirmation, Coordinator, Lifecycle, Error), conversation ID, limit, and offset |
get_tool_history |
Tool call records, filterable by conversation ID, tool name, limit, and offset |
get_query_history |
AI query lifecycle logs, filterable by conversation ID, provider, limit, and offset |
get_debug_sessions |
Debug session list, filterable by conversation ID and limit |
get_debug_events |
Events within a specific debug session, filterable by limit |
Typical use: When something goes wrong with an agent or tool execution, ask the AI to investigate. With the relevant logging enabled, the debugger tool can trace exactly what happened — which tools were called, what parameters were passed, what errors occurred, and how the query lifecycle progressed.
Requirements: The debugger tool must be enabled in the conversation’s tool selector. Agent log inspection requires agent logging (Preferences > Agents). Tool history, query history, and debug session inspection require debug logging (Preferences > Behavior).
Troubleshooting
The AI is not responding
- Check that your API key is valid in Preferences > AI
- Check the status strip for error indicators (red dot)
- Click the status strip to view error details in the notification feed
- Try switching to a different provider
Tools are not available
- Check tool enablement in the instruction message’s tool selection
- Some tools require workspace paths to be configured
- Some tools require a premium license
Agents are not firing
- Check that the agent is enabled (toggle switch in Preferences > Agents)
- Check active hours configuration
- Check cooldown and rate limit settings
- Verify the event source configuration (correct paths, valid schedule)
- Check the Agent Panel for error details
Specialized agents not working as expected
Specialized agents (Aristotle, Newton, Da Vinci, Patton, Sherlock, Socrates) and sub-agents spawned by Caesar each request a set of base tools. These tools are intersected with the tools enabled in the parent conversation — any tool not enabled in the conversation is silently dropped. If a specialized agent seems unable to perform its role, check that its required tools are enabled.
| Agent | Base Tools |
|---|---|
| Aristotle | read, search, memory, ask_user, conversation, caesar, web, socrates, tool_optimizer |
| Newton | file, search, memory, ask_user, conversation, caesar, web, socrates, academic_search, tool_optimizer |
| Da Vinci | file, search, memory, ask_user, conversation, caesar, web, socrates, newton, tool_optimizer |
| Patton | file, search, memory, ask_user, conversation, caesar, web, socrates |
| Sherlock | file, fs, search, exec, memory, internal_memory, ask_user, conversation, caesar, socrates, tool_optimizer |
| Socrates | (none — intentionally toolless auditor) |
| Caesar | Whatever tools the AI specifies per sub-agent |
All agents also receive continue_session and hippodamus automatically. Caesar is always removed from sub-agent tool sets to prevent recursive spawning.
To enable tools: Click the tool selector in the conversation’s instruction message and enable the required tools. You can also pass additional tools via the extra_tools parameter when invoking a specialized agent.
Why tools are filtered: Sub-agents inherit their parent’s tool boundary as a security measure. A sub-agent cannot access tools that the parent conversation or agent has not enabled.
Hotkeys not working
- Verify hotkeys are enabled and configured in Preferences > Behavior
- For inline text capture, grant Accessibility permission when prompted
- Carbon hotkeys do not require Accessibility permission
iOS app not connecting
- LAN: Both devices must be on the same network
- Relay: Enable Remote Access in Preferences on the Mac; requires a paid license tier
- Check relay status in Preferences > Remote Access
Memory not being used
- Ensure memory injection is enabled in Preferences > Memory
- Check that the memory store is not empty (use memory browser)
MCP servers not connecting
- Check connection status dots in Preferences > MCP Servers
- For stdio servers, verify the command exists in PATH
- Click “Test Connection” in the server editor
- Check that the server is running and accessible
Sandboxing problems
Cogitae runs in a macOS sandbox. This affects several behaviors:
- HTTP connections to LAN hostnames fail: URLSession may reject
plain
http://requests to hostnames likehttp://myserver:9111with a misleading “Internet connection appears to be offline” error (NSURLErrorDomain -1009), even though the network is fine. Use the IP address instead (e.g.,http://192.168.1.2:9111). This commonly affects MCP servers running on other machines on your local network. - Home directory path: Under sandbox,
FileManager.default.homeDirectoryForCurrentUserreturns the container path, not the real home directory. Cogitae usesAppDelegate.realHomeDirectory(POSIXgetpwuid) for paths that must match real filesystem locations like~/.cogitae/. - Database paths: All SQLite databases are stored in the
sandbox container at
~/Library/Containers/us.bitarts.cogitae/Data/Library/Application Support/us.bitarts.cogitae/, not the unsandboxed Application Support directory. - Plugin quarantine: Plugin bundles may retain the quarantine extended attribute under sandbox, causing Gatekeeper to block them. See Preferences > Plugins for status.