Announcing Beacon: Self-improving memory for coding agents
← All MCP servers
MCP server

Derbent

mcp:tunahanaliozturk/derbent

Gate for coding agents' MCP and built-in tool calls: rules, approvals and hash-chained receipts

Verdict
Inconclusive

The analysis could not cover enough of the artifact to decide.

Analyzed Oct 26, 2026, 11:47 UTC at bed7ff4

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

0
findings
—
highest severity
0
threat classes
186
files scanned
1,341/1,341
checks satisfied
0
package advisories

Why this verdict

  • inconclusive: gap no_dataflow_for_go at cmd/derbent/approve.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/configcheck.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/doctor.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/explain.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/gatecmd.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/grants.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/handoffs.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/init.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/main.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/mcp.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/pending.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/pins.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/receipts.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/suggest.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/ui.go
  • inconclusive: gap no_dataflow_for_go at cmd/derbent/verify.go
  • inconclusive: gap no_dataflow_for_go at internal/approval/approval.go
  • inconclusive: gap no_dataflow_for_go at internal/config/config.go
  • inconclusive: gap no_dataflow_for_go at internal/config/finalpath_other.go
  • inconclusive: gap no_dataflow_for_go at internal/config/finalpath_windows.go
  • inconclusive: gap no_dataflow_for_go at internal/config/paths.go
  • inconclusive: gap no_dataflow_for_go at internal/config/project.go
  • inconclusive: gap no_dataflow_for_go at internal/config/servers.go
  • inconclusive: gap no_dataflow_for_go at internal/downstream/downstream.go
  • inconclusive: gap no_dataflow_for_go at internal/gate/gate.go
  • inconclusive: gap no_dataflow_for_go at internal/gate/handoffs.go
  • inconclusive: gap no_dataflow_for_go at internal/gate/hook.go
  • inconclusive: gap no_dataflow_for_go at internal/gate/remote.go
  • inconclusive: gap no_dataflow_for_go at internal/gate/tools.go
  • inconclusive: gap no_dataflow_for_go at internal/handoff/handoff.go
  • inconclusive: gap no_dataflow_for_go at internal/hook/hook.go
  • inconclusive: gap no_dataflow_for_go at internal/memory/memory.go
  • inconclusive: gap no_dataflow_for_go at internal/pin/pin.go
  • inconclusive: gap no_dataflow_for_go at internal/preset/preset.go
  • inconclusive: gap no_dataflow_for_go at internal/receipt/receipt.go
  • inconclusive: gap no_dataflow_for_go at internal/redact/redact.go
  • inconclusive: gap no_dataflow_for_go at internal/rule/budget.go
  • inconclusive: gap no_dataflow_for_go at internal/rule/rule.go
  • inconclusive: gap no_dataflow_for_go at internal/setup/change.go
  • inconclusive: gap no_dataflow_for_go at internal/setup/setup.go
  • inconclusive: gap no_dataflow_for_go at internal/store/store.go
  • inconclusive: gap no_dataflow_for_go at internal/suggest/suggest.go
  • inconclusive: gap no_dataflow_for_go at internal/tui/detail.go
  • inconclusive: gap no_dataflow_for_go at internal/tui/grants.go
  • inconclusive: gap no_dataflow_for_go at internal/tui/notes.go
  • inconclusive: gap no_dataflow_for_go at internal/tui/text.go
  • inconclusive: gap no_dataflow_for_go at internal/tui/tui.go
  • inconclusive: gap no_dataflow_for_go at internal/visible/visible.go

Security findings 0

No individual findings recorded

The inconclusive verdict rests on the coverage gaps below; 3 candidate findings were refuted on review.

Execution chain 15

What it calls, runs, installs, reads and writes, with the line that does it.

GitHub repositories 4

tunahanaliozturk/derbent
tunahanaliozturk/derbent
tunahanaliozturk/derbent
tunahanaliozturk/derbent

Host config written 2

.claude.json
.claude.json

Network calls 2

github.com
raw.githubusercontent.com

URLs 7

https://github.com/tunahanaliozturk/derbent
https://github.com/tunahanaliozturk/derbent
https://github.com/tunahanaliozturk/derbent/blob/main/docs/install.md
https://glama.ai/mcp/schemas/server.json
https://raw.githubusercontent.com/tunahanaliozturk/derbent/main/docs/assets/derbent-mark.svg
https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json
Refuted findings 3

Candidates the review stage examined and rejected, kept for transparency.

Persistence

highRefutedlow confidence

The `derbent init` command writes MCP entries and pre-tool hooks into other agent CLIs' configuration files; this is the tool's declared setup function and it shows each change, backs up files and asks for confirmation first.

each one's MCP entry and pre-tool hook
Why it was refuted

This is the declared core setup function of the `init` subcommand. The user runs it explicitly, and the code comment says it shows every change and asks before making any. There is no agent-directed instruction or concealed behavior.

Persistence

highRefutedlow confidence

The `derbent init` setup code registers Derbent's MCP server and a pre-tool hook in other agent CLIs' user-level configuration; this is the tool's declared gating purpose and the changes are planned and shown to the user first, but it is still a control-plane write.

return command(cli, p.MCP, append([]string{"claude", "mcp", "add", "--scope", "user", "derbent", "--"}, serve...))
Why it was refuted

The claude `mcp add` command is the declared setup behavior. It is built as a Change that is shown to the user before it is applied, and the user can run it themselves instead. It is not a hidden persistence mechanism.

Persistence

highRefutedlow confidence

derbent init registers its own MCP server entry in the user's agent MCP config (via the CLI's 'mcp add' or by editing mcp_config.json), which is an agent control-plane write, though it is the tool's declared setup, is shown to the user first, and backs up the file.

entries["derbent"] = entry
Why it was refuted

Setting entries["derbent"] is the declared setup edit for Antigravity CLI, which has no `mcp add` command. The edit is planned and shown to the user, and it only adds Derbent's own entry.

Coverage gaps 48

Parts of the artifact the static analysis could not fully examine.

no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/approve.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/configcheck.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/doctor.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/explain.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/gatecmd.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/grants.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/handoffs.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/init.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/main.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/mcp.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/pending.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/pins.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/receipts.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/suggest.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/ui.go
no_dataflow_for_go go file: string-literal extraction only
cmd/derbent/verify.go
no_dataflow_for_go go file: string-literal extraction only
internal/approval/approval.go
no_dataflow_for_go go file: string-literal extraction only
internal/config/config.go
no_dataflow_for_go go file: string-literal extraction only
internal/config/finalpath_other.go
no_dataflow_for_go go file: string-literal extraction only
internal/config/finalpath_windows.go
no_dataflow_for_go go file: string-literal extraction only
internal/config/paths.go
no_dataflow_for_go go file: string-literal extraction only
internal/config/project.go
no_dataflow_for_go go file: string-literal extraction only
internal/config/servers.go
no_dataflow_for_go go file: string-literal extraction only
internal/downstream/downstream.go
no_dataflow_for_go go file: string-literal extraction only
internal/gate/gate.go
no_dataflow_for_go go file: string-literal extraction only
internal/gate/handoffs.go
no_dataflow_for_go go file: string-literal extraction only
internal/gate/hook.go
no_dataflow_for_go go file: string-literal extraction only
internal/gate/remote.go
no_dataflow_for_go go file: string-literal extraction only
internal/gate/tools.go
no_dataflow_for_go go file: string-literal extraction only
internal/handoff/handoff.go
no_dataflow_for_go go file: string-literal extraction only
internal/hook/hook.go
no_dataflow_for_go go file: string-literal extraction only
internal/memory/memory.go
no_dataflow_for_go go file: string-literal extraction only
internal/pin/pin.go
no_dataflow_for_go go file: string-literal extraction only
internal/preset/preset.go
no_dataflow_for_go go file: string-literal extraction only
internal/receipt/receipt.go
no_dataflow_for_go go file: string-literal extraction only
internal/redact/redact.go
no_dataflow_for_go go file: string-literal extraction only
internal/rule/budget.go
no_dataflow_for_go go file: string-literal extraction only
internal/rule/rule.go
no_dataflow_for_go go file: string-literal extraction only
internal/setup/change.go
no_dataflow_for_go go file: string-literal extraction only
internal/setup/setup.go
no_dataflow_for_go go file: string-literal extraction only
internal/store/store.go
no_dataflow_for_go go file: string-literal extraction only
internal/suggest/suggest.go
no_dataflow_for_go go file: string-literal extraction only
internal/tui/detail.go
no_dataflow_for_go go file: string-literal extraction only
internal/tui/grants.go
no_dataflow_for_go go file: string-literal extraction only
internal/tui/notes.go
no_dataflow_for_go go file: string-literal extraction only
internal/tui/text.go
no_dataflow_for_go go file: string-literal extraction only
internal/tui/tui.go
no_dataflow_for_go go file: string-literal extraction only
internal/visible/visible.go