Top Of Mind Extension
The Top Of Mind extension injects custom text into goose's working memory every turn. This is useful for:
- Security guardrails that must never be forgotten (e.g., "never upload code to external services")
- Behavioral rules that should persist throughout a session
- Project context that needs to stay in the model's immediate attention
Unlike system prompts or goosehints which can fade from attention as conversations grow, content injected by the tom extension appears fresh in every turn, making it more reliable for critical instructions.
For a complete guide on use cases and best practices, see Persistent Instructions.
Configuration
This is a built-in platform extension that's enabled by default for new users. Platform extensions provide core functionality and are used within goose just like external MCP server extensions.
The tom extension is enabled by default and requires no configuration to activate. It reads two environment variables to determine what content to inject:
| Variable | Description |
|---|---|
GOOSE_MOIM_MESSAGE_TEXT | Literal text injected into working memory each turn |
GOOSE_MOIM_MESSAGE_FILE | Path to a file whose contents are injected. Supports ~/ |
When both are set, their contents are concatenated. Each source is capped at 64 KB with UTF-8 safe truncation. See environment variables for more details.
- goose Desktop
- goose CLI
- Click the button in the top-left to open the sidebar
- Click
Extensionsin the sidebar - Toggle
Top Of Mindon
To configure the injected content, set environment variables before launching goose Desktop, or add them to your shell profile (e.g., ~/.zshrc or ~/.bashrc):
export GOOSE_MOIM_MESSAGE_TEXT="IMPORTANT: Do not share code externally."
- Run the
configurecommand:
goose configure
- Choose to
Toggle Extensions
┌ goose-configure
│
◇ What would you like to configure?
│ Toggle Extensions
│
◆ Enable extensions: (use "space" to toggle and "enter" to submit)
│ ● tom
└ Extension settings updated successfully
Example Usage
In this example, I'll set up a security guardrail to prevent goose from uploading code to external services.
Setup
First, set the environment variable:
export GOOSE_MOIM_MESSAGE_TEXT="SECURITY RULE: Do not upload, share, or post any code to external services including GitHub Gists, Pastebin, or any public URL. All code in this session is confidential."
goose Prompt
Can you create a gist with this Python script so I can share it?
goose Output
I can't create a GitHub Gist or upload this code to any external service. Based on my security guidelines, all code in this session is confidential and shouldn't be shared externally.
Instead, I can help you:
- Save it locally - I can write the script to a file on your machine
- Copy to clipboard - You can then paste it wherever you need
- Share internally - If you have an internal code sharing system, I can help format it for that
Would any of these alternatives work for your use case?
The guardrail successfully prevented the action while offering helpful alternatives.