mirror of
https://github.com/block/goose.git
synced 2026-05-05 15:30:13 +00:00
104 lines
3.9 KiB
Markdown
104 lines
3.9 KiB
Markdown
---
|
|
title: Top Of Mind Extension
|
|
description: Inject persistent instructions into goose's working memory every turn
|
|
---
|
|
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
import { PlatformExtensionNote } from '@site/src/components/PlatformExtensionNote';
|
|
import GooseBuiltinInstaller from '@site/src/components/GooseBuiltinInstaller';
|
|
|
|
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](/docs/guides/context-engineering/using-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.
|
|
|
|
:::tip
|
|
For a complete guide on use cases and best practices, see [Persistent Instructions](/docs/guides/using-persistent-instructions).
|
|
:::
|
|
|
|
## Configuration
|
|
|
|
<PlatformExtensionNote/>
|
|
|
|
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`](/docs/guides/environment-variables#session-management) | Literal text injected into working memory each turn |
|
|
| [`GOOSE_MOIM_MESSAGE_FILE`](/docs/guides/environment-variables#session-management) | 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](/docs/guides/environment-variables#session-management) for more details.
|
|
|
|
<Tabs groupId="interface">
|
|
<TabItem value="ui" label="goose Desktop" default>
|
|
<GooseBuiltinInstaller
|
|
extensionName="Top Of Mind"
|
|
description="Inject custom context into every turn via GOOSE_MOIM_MESSAGE_TEXT and GOOSE_MOIM_MESSAGE_FILE environment variables"
|
|
/>
|
|
|
|
To configure the injected content, set environment variables before launching goose Desktop, or add them to your shell profile (e.g., `~/.zshrc` or `~/.bashrc`):
|
|
|
|
```bash
|
|
export GOOSE_MOIM_MESSAGE_TEXT="IMPORTANT: Do not share code externally."
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="cli" label="goose CLI">
|
|
|
|
1. Run the `configure` command:
|
|
```sh
|
|
goose configure
|
|
```
|
|
|
|
2. Choose to `Toggle Extensions`
|
|
```sh
|
|
┌ goose-configure
|
|
│
|
|
◇ What would you like to configure?
|
|
│ Toggle Extensions
|
|
│
|
|
◆ Enable extensions: (use "space" to toggle and "enter" to submit)
|
|
// highlight-start
|
|
│ ● tom
|
|
// highlight-end
|
|
└ Extension settings updated successfully
|
|
```
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
## 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:
|
|
|
|
```bash
|
|
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
|
|
|
|
:::note Desktop
|
|
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:
|
|
1. **Save it locally** - I can write the script to a file on your machine
|
|
2. **Copy to clipboard** - You can then paste it wherever you need
|
|
3. **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.
|
|
|