Synapse

Troubleshooting

Diagnose installation, tool connection, scope, vault, memory, database, and restore failures without risking user-owned data.

Start with status

shell
synapse version
synapse path
synapse data check
synapse status .
synapse settings show

These commands establish which executable is running, which database it opens, whether the database is healthy, which scopes apply to the current folder, and which response budget connected tools use.

One command for a bug report

synapse doctor gathers everything anyone would ask you for: version, store state and size, which tools are connected and what each is set up with, skill and mesh state, shell and CLI integration, resolved paths, and any crash Synapse has recorded.

shell
synapse doctor
synapse doctor --json

Every check reports rather than fails, so a damaged store is described in the report instead of ending it. Synapse sends nothing anywhere — the report is printed for you to read or paste.

App and CLI

macOS will not open the app

Confirm you downloaded the current archive from the release page, extracted it fully, and moved the app to Applications. The app is Developer ID signed and notarized, so a Gatekeeper refusal usually means the archive was altered or only partly extracted. Avoid modifying files inside the application bundle because that invalidates its signature.

synapse: command not found

Install the CLI from Settings, then add ~/.local/bin to PATH. Run the executable by full path once to verify:

shell
~/.local/bin/synapse version

The CLI installer reports a conflict

A different file already exists at the destination and does not have a matching Synapse receipt. Synapse will not replace it. Move or rename that file yourself, or set SYNAPSE_BIN to a different full destination and install again.

The CLI stopped working after moving the app

Packaged installations point into the signed bundle. Open Synapse at its final location and choose Install CLI again to refresh the managed launcher.

Tool connection

A tool is detected but not connected

The registered entry may point to a deleted build or old app location, or may have arguments other than ["mcp"]. Choose Repair in the app. Synapse backs up the integration store before replacing the named entry.

The tools do not appear after connection

Restart the developer tool so it relaunches user-level MCP servers. Confirm the stored command exists and runs synapse mcp without printing shell startup text to stdout.

The tools follow different global guidance

Run synapse guidance show. If a pointer is missing, use synapse guidance sync or Settings → Shared guidance → Sync pointers, then restart the tools. Consolidation is optional and requires separate confirmation.

Setup failed

Read the app error for the external tool command that failed. Setup restores both the integration store and instruction file on failure, leaving .synapsebackup recovery copies beside changed existing files.

Scopes and secrets

vault scope is not ready

Run synapse status .. Approve pending or changed files with synapse allow only after inspecting them. Fix invalid YAML and unknown vault.name references before trying either shell mode again.

The shell hook does not activate

Open Settings and check Shell environments. Enable or repair the detected hook, then open a new terminal. Run synapse status .; it should report the current shell hook and ambient state as ready. Approve the closest scope with synapse allow. Global mappings alone never activate ambient mode.

Settings reports an incomplete or duplicate hook block

Synapse refuses to guess which startup-file content it owns. Open the path shown in Settings, reduce the # synapse:shell:begin and # synapse:shell:end markers to one complete pair or remove that marked block, then return to Settings and enable the hook again.

An ambient value remains after leaving

Press Enter once so the prompt hook reevaluates the directory. If the name existed before activation, Synapse deliberately restores that original value. Run synapse status . to distinguish a restored value from an active scope.

A narrower mapping does not apply

Check every ancestor scope. A broader deny permanently blocks that environment name for narrower scopes. Also confirm the nested file itself is approved and the command’s working directory is below it.

Keychain access fails

This applies on the Keychain store only; run synapse vault backend to see which one this machine uses. Unlock the login Keychain and retry from an interactive user session. If a label exists but its item was removed externally, set the secret again. If the credential itself may be invalid, rotate it at its issuer before storing the replacement. A denied Keychain prompt during vault migrate stops the migration with nothing moved and nothing switched, so retrying after granting access is safe.

A secret has no value in the encrypted vault

The label is in brain.db and the sealed value is not in vault.db. That happens when the two came from different machines, or when a value was set while the machine was on the other store. Run synapse vault backend to confirm which store is in use, synapse vault migrate to bring values across from the other one, or synapse secret set to write the value again.

Nothing opens with the vault key

vault.key is the only thing that opens vault.db, and a replaced key cannot be recovered from the sealed values. If the key was lost, set each value again with synapse secret set; the labels and mappings in brain.db tell you which ones are expected. Back the two files up together, and treat that backup like the credentials it holds.

The child sees a value but MCP does not

This is expected. MCP reports only names, trust state, and which store this machine uses. Values are read out of the vault only for synapse run -- <command>, while an installed shell hook activates an approved directory, or when you ask for one with synapse secret copy.

Memory and database

Recall returns too little content

Run synapse settings show. Switch to Balanced or Full if Lean is too small. Search with concrete words present in the stored body and inspect the exact entry through synapse memory show <id>.

A memory that is definitely stored does not come back

Make the search show its working with synapse memory list "your query" --explain. It prints the words it searched for and the words it dropped for matching nearly every memory, which separates a query that lost its only real term from a store that holds nothing. If what you are looking for is an exact string — a flag, an identifier, a path — use synapse memory grep instead, which matches characters and never drops a word. Also check the entry has not been superseded: synapse memory list marks a replaced memory, synapse memory show <id> names what replaced it, and synapse memory restore <id> puts it back in recall.

A stored memory is wrong

If the wording was bad, edit the original. If it was true and stopped being true, add the new version and run synapse memory supersede <old> <new> — recall returns the new one and the old text stays readable. If it should never have been stored, delete it. What to avoid is adding a contradictory entry and leaving both live, because recall returns both. Export a snapshot before a large cleanup.

An import shows flagged entries

Open the provider folder with Review source and inspect the named files. The app never imports flagged content. If a CLI import is genuinely safe, rerun it with both --include-flagged and --confirm; otherwise move only the durable non-sensitive fact into Synapse manually.

One project's memory appears missing

Inspect the record's project root in the Memory editor and compare it with the current repository root. Project recall intentionally combines global memory with one matching project and excludes every other project.

Integrity check fails

Stop using the affected database. Do not overwrite it. Preserve the whole data directory, locate the newest known-good export or automatic backup, and follow the restore procedure. A failed check is a data-recovery event, not a migration prompt.

Restore

Restore says Synapse is using the database

Quit the desktop app and close every developer-tool session connected to the MCP server. Confirm no synapse mcp process remains, then retry. The refusal proves the exclusive lifecycle guard is working.

The backup version is unsupported

The source schema must match the current release. Keep the source unchanged. Open it first with the Synapse version that created it, let that version migrate normally if appropriate, export a fresh snapshot, then restore that compatible export with the current app.

Secrets are missing after moving to another machine

Database exports carry brain.db and never a value. Recreate each value with synapse secret set on the destination, or — on the encrypted store — copy vault.db and vault.key across together, since neither is any use without the other. Existing vault labels and references in the restored database tell you which entries are expected.