Goose
Status: Supported. Setup id: goose. Backfill: Yes.
HypAware reads Goose's local session
database, ~/.local/share/goose/sessions/sessions.db, read-only. It polls
the database every 60 seconds for new messages, and a scheduled import every
15 minutes brings in existing sessions. It does not route Goose's model
traffic or change Goose's settings.
The same database serves the Goose CLI and Desktop on Linux and macOS.
What is recorded
Sessions and messages, including your prompts, Goose's responses, tool calls and their output, the tokens Goose records for each response, and each session's working directory. A session's title is generated by the model from your conversation, so it is treated as message content.
Subagent sessions are recorded as their own sessions, linked to the session
that started them. Sessions Goose keeps hidden, such as goose run --no-session and the checks goose configure runs, are never read.
Set it up
hyp setup offers Goose when it finds the session database. On a new
installation you can pick it without the prompts:
hyp setup --source goose
hyp statusTo add Goose to an existing installation, run hyp setup in a terminal,
choose Reconfigure, and select Goose; your current choices stay selected.
hyp setup --source goose refuses to change an existing configuration, and
--force replaces it rather than adding to it.
This integration installs no skills into Goose.
Use a different database location
The daemon does not see a GOOSE_PATH_ROOT set in your shell, because it
runs under launchd or systemd with its own environment. A hyp backfill goose
run from that shell does see it, so the two can read different databases. If
you set GOOSE_PATH_ROOT, or keep the database somewhere else, add this entry
to the
existing plugins list in your HypAware configuration, preserving the other
entries:
{
"name": "@hypaware/goose",
"config": {
"sessions_db": "/absolute/path/to/sessions.db"
}
}See configuration for the config location, then apply and check the change:
hyp config validate
hyp daemon restart
hyp statusImport existing history
Setup does not import your existing sessions itself. The scheduled import picks them up within 15 minutes, or run it now:
hyp backfill goose --dry-run
hyp backfill gooseNew messages arrive on the next poll, up to a minute after Goose writes them.
A scheduled import also runs every 15 minutes. It picks up changes Goose
makes to a session it already wrote, so those can take up to 15 minutes to
appear. Set backfill.window_days to limit both imports to recent sessions.
With backfill.on_join set to false, neither runs.
Privacy
Directory markings and .hypignore apply to each session's working directory.
To stop recording one session, pass its Goose session id, such as
20261103_4. Goose prints the id when a session starts, and
goose session list shows it for each session:
hyp session ignore 20261103_4Goose reads saved exclusions on its next poll, so an ignore takes effect within a minute.
The command saves the exclusion through the HypAware gateway, so it works only
while HypAware also records another client through its gateway. On an install
that records only Goose, it prints one hyp session error line, exits 3, and
saves nothing.
Ignore the session's working directory instead, which also stops recording
every other Goose session there:
hyp privacy ignore /path/to/session/working/dirSee marking directories.
Goose writes its own copy of your prompts. Goose saves the full body of
every model request, including your prompts, to llm_request.*.jsonl files in
its logs directory. HypAware does not read those files, and HypAware's privacy
controls do not cover them.
Limits
- Sessions from Goose versions before 1.10.0, which kept each session in its
own
.jsonlfile, are not imported. - Goose Desktop sessions are recorded only when Desktop writes them to the
same
sessions.db. Paths only Desktop uses are not read. - The older macOS location,
~/Library/Application Support/Block/goose/, is not read. Pointsessions_dbat a database there if you still use one. - If Goose changes its database schema,
hyp statusreports the missing column and HypAware records nothing until a release supports the new schema. It never writes partial rows.
For status messages and fixes, see troubleshooting.