ZeroRoot Docs

API Reference

The Gibson SDK proto surface — every service, message, field, and enum, generated from the protos.

This is the machine-generated reference for the Gibson SDK proto surface — the services, messages, fields, and enums a component developer compiles against. It is exhaustive; the guides walk you through the common workflows. Every symbol below is grouped by its proto package.

Package gibson.agent.v1

Services

AgentService

Execute

ExecuteRequestExecuteResponse

GetDescriptor

GetDescriptorRequestGetDescriptorResponse

GetSlotSchema

GetSlotSchemaRequestGetSlotSchemaResponse

Health

HealthRequestHealthResponse

Messages

AgentSlotConfig

Field#TypeDescription
provider1string
model2string
temperature3double
max_tokens4int32

AgentSlotConstraints

Field#TypeDescription
min_context_window1int32
required_features2repeated string

AgentSlotDefinition

Field#TypeDescription
name1string
description2string
required3bool
default_config4AgentSlotConfig
constraints5AgentSlotConstraints

ExecuteRequest

Field#TypeDescription
task1gibson.types.v1.Task
timeout_ms2int64
callback_endpoint3stringCallback endpoint for the orchestrator's HarnessCallbackService. When provided, the agent will connect to this endpoint to access harness operations (LLM, tools, memory, etc.).
callback_token4stringOptional authentication token for the callback connection.
mission5gibson.common.v1.TypedMapMission context for this execution.
target6gibson.common.v1.TypedMapTarget information for this execution.
trace_id7stringTrace ID for distributed tracing (propagated from orchestrator).
parent_span_id8stringParent span ID for distributed tracing (propagated from orchestrator).
mission_run_id9stringMission run ID - unique identifier for this specific mission execution. Created by MissionGraphManager.CreateMissionRunNode at mission start. Used for mission-scoped GraphRAG storage.
agent_run_id10stringAgent run ID - unique identifier for this specific agent execution. Used for DISCOVERED relationships and provenance tracking.
run_number11int32Run number - sequential number for this mission (1, 2, 3...). Used for mission memory queries and historical comparisons.

ExecuteResponse

Field#TypeDescription
result1gibson.types.v1.Result
error2gibson.common.v1.Error

GetDescriptorRequest

No fields.

GetDescriptorResponse

Field#TypeDescription
name1string
version2string
description3string
capabilities4repeated string
target_schemas5repeated TargetSchemaProto
technique_types6repeated string
target_types7repeated stringDeprecated: v0.8.0. Use target_schemas (field 5) instead. Will be removed in v0.10.0.

GetSlotSchemaRequest

No fields.

GetSlotSchemaResponse

Field#TypeDescription
slots1repeated AgentSlotDefinition

HealthRequest

No fields.

HealthResponse

Field#TypeDescription
status1gibson.common.v1.HealthStatus

TargetSchemaProto

Field#TypeDescription
type1string
version2string
schema_json3string
description4string

Package gibson.agentidentity.v1

Package gibson.agentidentity.v1 — AgentIdentityService: customer-callable machine-identity provisioning surface and the developer enrollment dev-loop (gibson component register / gibson agent). Re-homed out of gibson.tenant.v1 into its own wire package so it can stay in the OSS SDK while the nine tenant-administration services move to the gibson platform protos under the unchanged gibson.tenant.v1 package — keeping both in one package would link two generated Go homes for gibson.tenant.v1 into the daemon (proto: duplicate registration). See ADR-0058 (amended 2026-06-22).

Services

AgentIdentityService

AgentIdentityService provisions and manages machine identities for agents, tools, and plugins.

CreateAgentIdentity

CreateAgentIdentityRequestCreateAgentIdentityResponse

CreateAgentIdentity provisions a new machine identity for an agent, tool, or plugin. Returns a one-time capability-grant bootstrap_token that cannot be recovered after this call (ADR-0045 — the unified enrollment credential for every kind).

ListAgentIdentities

ListAgentIdentitiesRequestListAgentIdentitiesResponse

ListAgentIdentities returns all agent/tool/plugin identities provisioned in the caller's tenant, with optional kind filtering and pagination.

RevokeAgentIdentity

RevokeAgentIdentityRequestRevokeAgentIdentityResponse

RevokeAgentIdentity permanently revokes a machine identity. Existing JWTs stop validating within the IdP token TTL (<=60 seconds). Idempotent on already-revoked principals (returns NotFound).

Messages

AgentIdentity

AgentIdentity is a single entry in the list response.

Field#TypeDescription
principal_id1string
kind2PrincipalKind
name3string
description4string
created_at5google.protobuf.Timestamp
last_authenticated_at6google.protobuf.Timestamplast_authenticated_at is null if never authenticated or unsupported by the IdP.
revoked7bool
created_by_subject8string

ComponentGrant

ComponentGrant describes an optional FGA capability grant to apply at creation time.

Field#TypeDescription
component_ref1stringcomponent_ref is the component reference, e.g. "tool:nmap" or "plugin:gitlab".
relation2stringrelation is the FGA relation to grant, e.g. "can_invoke".

CreateAgentIdentityRequest

CreateAgentIdentityRequest is the input to AgentIdentityService.CreateAgentIdentity.

Field#TypeDescription
name1stringname must match ^[a-z][a-z0-9-]{2,40}$
kind2PrincipalKindkind must not be UNSPECIFIED.
description3stringdescription is optional, max 256 chars.
component_grants4repeated ComponentGrantcomponent_grants is an optional list of FGA capability grants to apply at creation.

CreateAgentIdentityResponse

CreateAgentIdentityResponse carries the provisioned identity credentials. The bootstrap_token is emitted exactly once and cannot be recovered.

Field#TypeDescription
principal_id1stringprincipal_id is the FGA principal identifier (e.g. "agent_principal:uuid").
kind2PrincipalKind
name3string
gibson_url6stringgibson_url is the daemon's public Envoy URL for use in enroll_command.
enroll_command7stringenroll_command is a complete copy-pasteable shell invocation for component enrollment: gibson component register --kind &lt;kind> --token -.
bootstrap_token8stringbootstrap_token is a one-time, daemon-signed Capability-Grant bootstrap credential the component presents to the CG register endpoint to complete its FIRST host registration (it carries no Capability Grant yet). Under the unified-identity model (ADR-0045) this is the SOLE credential gibson component register uses for every kind; the enroll_command pipes it via --token -. Store it immediately; it will not be shown again.

ListAgentIdentitiesRequest

ListAgentIdentitiesRequest is the input to AgentIdentityService.ListAgentIdentities.

Field#TypeDescription
page_size1int32page_size defaults to 50, max 200.
page_token2string
kind_filter3PrincipalKindkind_filter: UNSPECIFIED means return all kinds.

ListAgentIdentitiesResponse

ListAgentIdentitiesResponse is the output of AgentIdentityService.ListAgentIdentities.

Field#TypeDescription
identities1repeated AgentIdentity
next_page_token2string

RevokeAgentIdentityRequest

RevokeAgentIdentityRequest is the input to AgentIdentityService.RevokeAgentIdentity.

Field#TypeDescription
principal_id1string

RevokeAgentIdentityResponse

RevokeAgentIdentityResponse is the output of AgentIdentityService.RevokeAgentIdentity.

No fields.

Enums

PrincipalKind

PrincipalKind identifies the type of machine principal being provisioned.

Value#Description
PRINCIPAL_KIND_UNSPECIFIED0
PRINCIPAL_KIND_AGENT1
PRINCIPAL_KIND_TOOL2
PRINCIPAL_KIND_PLUGIN3

Package gibson.budget_status.v1

Package gibson.budget_status.v1 — public, customer-visible wire shapes for LLM budget status signals.

BudgetScope and BudgetExceeded are the wire-level types that:

  • the daemon attaches to a codes.ResourceExhausted gRPC status as a status-detail when an ExecuteLLM call is denied for budget reasons (see internal/daemon/api/server_provider_exec.go); and
  • the SDK exposes back to customer agent code through llm.BudgetExceededError and llm.IsBudgetExceeded (see llm/errors.go).

Both surfaces share these types — the customer-facing READ side lives in the public OSS SDK (this package); the tenant-admin WRITE-side service that mutates budgets (gibson.budget.v1.BudgetService) lives in the internal platform-sdk. Customer agent code branching on budget denial parses BudgetExceeded directly out of the gRPC status detail without needing the admin service descriptor.

This mirrors the sdk#103 pattern that did the same separation for gibson.capability.v1.CapabilityGrantInfo (READ side in OSS) vs gibson.admin.v1.GrantsAdminService (WRITE side in platform-sdk).

Spec: llm-user-attribution-governance (Requirement 3, READ-side wire contract); two-surface platform contract (ADR-0025 / ADR-0030, sdk#106).

Messages

BudgetExceeded

BudgetExceeded is the status-detail payload returned inside the codes.ResourceExhausted gRPC status when an LLM call is denied for budget reasons. Consumers unmarshal via SDK helper IsBudgetExceeded.

Field numbers + tag names are wire-identical to the original definition in gibson.budget.v1.BudgetExceeded; see sdk#106 for the relocation rationale. Customer code branching on budget denial continues to receive the same on-wire bytes.

Field#TypeDescription
scope1BudgetScope
dimension2stringdimension is one of "tokens" or "spend".
current_usage3int64
limit4int64
period_reset_at_unix5int64
subject_id6stringsubject_id is the limiting subject (user or team ID; empty for tenant).

Enums

BudgetScope

BudgetScope identifies the subject class a budget applies to. Tenant is the rollup ceiling; user and team are subdivisions within a tenant.

Field numbers + enum-value names are wire-identical to the original definition in gibson.budget.v1; see sdk#106 for the relocation rationale.

Value#Description
BUDGET_SCOPE_UNSPECIFIED0
BUDGET_SCOPE_USER1
BUDGET_SCOPE_TEAM2
BUDGET_SCOPE_TENANT3

Package gibson.capability.v1

Package gibson.capability.v1 — public, customer-visible wire shape for capability grants (CG-JWTs).

CapabilityGrantInfo describes ONE active capability grant minted for an agent / tool / plugin install. It is the read-side projection returned by:

  • gibson.identity.v1.IdentityService.WhoAmI (a principal listing its own active grants)
  • gibson.admin.v1.GrantsAdminService.ListActiveGrants (a tenant_admin inspecting all grants in the tenant)

Both surfaces share this type — the READ side lives in the public OSS SDK (this package); the WRITE/inspector SERVICE that mutates grants lives in the internal platform-sdk. Customer code that embeds the agent runtime parses CapabilityGrantInfo to render "what can I do right now" UI without needing the admin service descriptor.

Spec: two-surface platform contract (ADR-0001, forthcoming); component-bootstrap-e2e Requirement 10 (read side); secrets-tenant-lifecycle Requirement 8.1 (write side, moved to platform-sdk under slice #108).

Messages

CapabilityGrantInfo

CapabilityGrantInfo is the wire-shape for one active capability grant. It is derived from the daemon's grant store and is suitable for both the dashboard's grants table and the agent-side "what can I do right now" UI.

Field#TypeDescription
jti1stringjti is the JWT ID claim of the CG-JWT — the canonical identifier the dashboard uses for filtering and per-row drill-down.
recipient_install_id2stringrecipient_install_id is the install ID this grant was minted for.
recipient_class3RecipientClassrecipient_class is the class of the install (AGENT / TOOL / PLUGIN).
recipient_name4stringrecipient_name is the display name (component name) of the install.
allowed_rpcs5repeated stringallowed_rpcs is the set of method strings the grant authorizes (e.g. ["GetCredential", "RecordFinding"]).
mission_id6stringmission_id is the mission this grant scopes the recipient to. Empty for non-mission-scoped grants.
task_id7stringtask_id is the task within the mission. Empty when mission_id is empty or the grant is mission-wide.
issued_at_unix8int64issued_at_unix is the iat claim, Unix seconds.
expires_at_unix9int64expires_at_unix is the exp claim, Unix seconds.
near_expiry10boolnear_expiry is true when the grant expires within 5 minutes from now. The dashboard renders these rows with a warning highlight.
isolation11IsolationModeisolation is where this grant's untrusted-execution boundary lives (ADR-0010). UNSPECIFIED is treated as HOSTED_SANDBOX by the daemon's dispatch-policy gate. Consumed together with the deployment shape: setec-only permits only HOSTED_SANDBOX (fail-closed otherwise).

Enums

IsolationMode

IsolationMode is where the untrusted-execution isolation boundary lives for a capability grant (ADR-0010). It is consumed by the daemon's dispatch-policy gate together with the deployment shape (GIBSON_UNTRUSTED_EXEC): under the hosted SaaS shape (setec-only) only ISOLATION_MODE_HOSTED_SANDBOX is permitted; any other value is rejected fail-closed. Under a customer-operated shape (customer-isolation) the customer modes are permitted, and ISOLATION_MODE_ON_PREM_SANDBOX_ENDPOINT resolves the configured (customer- pointed) setec SandboxService endpoint.

The enum lives here (public OSS) because callers parsing a CapabilityGrantInfo need to render the isolation posture without pulling the admin/mint service descriptor — same rationale as RecipientClass.

Value#Description
ISOLATION_MODE_UNSPECIFIED0ISOLATION_MODE_UNSPECIFIED is treated as ISOLATION_MODE_HOSTED_SANDBOX by the gate (back-compat for grants minted before this field shipped), which is the fail-closed-safe default in the hosted shape.
ISOLATION_MODE_HOSTED_SANDBOX1ISOLATION_MODE_HOSTED_SANDBOX: untrusted execution runs in the platform- operated setec sandbox fleet. The only mode permitted under setec-only.
ISOLATION_MODE_CUSTOMER_CLUSTER_ATTESTED2ISOLATION_MODE_CUSTOMER_CLUSTER_ATTESTED: untrusted execution runs in a customer-operated cluster whose isolation the daemon verifies by attestation. Attestation mechanics are a separate follow-up.
ISOLATION_MODE_CUSTOMER_SELF_SANDBOX3ISOLATION_MODE_CUSTOMER_SELF_SANDBOX: the customer owns and operates the isolation boundary entirely. Attestation mechanics are a separate follow-up.
ISOLATION_MODE_ON_PREM_SANDBOX_ENDPOINT4ISOLATION_MODE_ON_PREM_SANDBOX_ENDPOINT: untrusted execution dispatches to a customer-pointed setec SandboxService endpoint configured on the daemon.

RecipientClass

RecipientClass is the class of caller a capability grant is issued to. The runtime enum lives here (public OSS) because callers parsing a CapabilityGrantInfo need to discriminate without pulling the admin service descriptor.

Value#Description
RECIPIENT_CLASS_UNSPECIFIED0
RECIPIENT_CLASS_AGENT1RECIPIENT_CLASS_AGENT: the grant authorizes an agent install to invoke a per-mission RPC set.
RECIPIENT_CLASS_TOOL2RECIPIENT_CLASS_TOOL: the grant authorizes a tool install.
RECIPIENT_CLASS_PLUGIN3RECIPIENT_CLASS_PLUGIN: the grant authorizes a plugin install.

Package gibson.common.v1

Messages

Error

Field#TypeDescription
code1string
message2string
details3string
retryable4bool

HealthStatus

Field#TypeDescription
status1string
message2string
checked_at3int64

JSONSchema

Field#TypeDescription
json1string

Metadata

Metadata contains labels and annotations for resources

Field#TypeDescription
labels1map<string, string>
annotations2map<string, string>

TypedArray

TypedArray represents an array of TypedValues

Field#TypeDescription
items1repeated TypedValue

TypedMap

TypedMap represents a map of string keys to TypedValues

Field#TypeDescription
entries1map<string, TypedValue>

TypedValue

TypedValue represents a dynamically typed value

Field#TypeDescription
null_value1NullValue
string_value2string
int_value3int64
double_value4double
bool_value5bool
bytes_value6bytes
array_value7TypedArray
map_value8TypedMap

oneof kind — one of: null_value, string_value, int_value, double_value, bool_value, bytes_value, array_value, map_value.

Enums

ErrorCode

ErrorCode defines standard error codes across the system

Value#Description
ERROR_CODE_UNSPECIFIED0
ERROR_CODE_INTERNAL1
ERROR_CODE_INVALID_ARGUMENT2
ERROR_CODE_NOT_FOUND3
ERROR_CODE_TIMEOUT4
ERROR_CODE_UNAVAILABLE5
ERROR_CODE_PERMISSION_DENIED6
ERROR_CODE_ALREADY_EXISTS7
ERROR_CODE_RESOURCE_EXHAUSTED8
ERROR_CODE_CANCELLED9
ERROR_CODE_AGENT_TIMEOUT10
ERROR_CODE_AGENT_PANIC11
ERROR_CODE_AGENT_INIT_FAILED12
ERROR_CODE_LLM_RATE_LIMITED13
ERROR_CODE_LLM_CONTEXT_EXCEEDED14
ERROR_CODE_LLM_API_ERROR15
ERROR_CODE_LLM_PARSE_ERROR16
ERROR_CODE_TOOL_NOT_FOUND17
ERROR_CODE_TOOL_TIMEOUT18
ERROR_CODE_TOOL_EXEC_FAILED19
ERROR_CODE_NETWORK_TIMEOUT20
ERROR_CODE_NETWORK_UNREACHABLE21
ERROR_CODE_TLS_ERROR22
ERROR_CODE_DELEGATION_FAILED23
ERROR_CODE_CHILD_AGENT_FAILED24
ERROR_CODE_CONFIG_ERROR25

HealthState

HealthState defines standard health states

Value#Description
HEALTH_STATE_UNSPECIFIED0
HEALTH_STATE_HEALTHY1
HEALTH_STATE_DEGRADED2
HEALTH_STATE_UNHEALTHY3

NullValue

NullValue represents a null value in TypedValue

Value#Description
NULL_VALUE_UNSPECIFIED0

Package gibson.component.v1

Services

ComponentService

ComponentService is the central gRPC service that all Gibson components (agents, tools, and plugins) connect to. Components register themselves, receive work via long-polling, submit results, and access harness operations (LLM completion, tool calls, plugin queries, findings, memory) through the proxy RPCs defined here.

CallTool

CallToolRequestCallToolResponse

CallTool proxies a tool execution request through the agent harness.

CallToolStream

CallToolStreamRequeststream CallToolStreamResponse

CallToolStream proxies a tool execution with server-side streaming of progress, partial results, warnings, and the final output.

CancelMission

CancelMissionRequestCancelMissionResponse

CancelMission requests cancellation of a running mission.

Complete

CompleteRequestCompleteResponse

Complete proxies an LLM completion request through the agent harness.

CompleteStream

CompleteStreamRequeststream CompleteStreamResponse

CompleteStream proxies a streaming LLM completion request through the agent harness.

CompleteStructured

CompleteStructuredRequestCompleteStructuredResponse

CompleteStructured proxies an LLM completion requesting JSON output conforming to the supplied schema.

CompleteWithTools

CompleteWithToolsRequestCompleteWithToolsResponse

CompleteWithTools proxies an LLM completion with tool definitions for function-calling support. Returns the response including any tool calls.

CreateMission

CreateMissionRequestCreateMissionResponse

CreateMission creates a new sub-mission.

DelegateToAgent

DelegateToAgentRequestDelegateToAgentResponse

DelegateToAgent dispatches a sub-task to another agent and returns its result.

DisablePlugin

DisablePluginRequestDisablePluginResponse

DisablePlugin deactivates a plugin for the calling tenant.

EnablePlugin

EnablePluginRequestEnablePluginResponse

EnablePlugin activates a plugin for the calling tenant, optionally supplying an initial configuration JSON blob.

FindSimilarAttacks

FindSimilarAttacksRequestFindSimilarAttacksResponse

FindSimilarAttacks returns attack patterns semantically similar to the given content.

FindSimilarFindings

FindSimilarFindingsRequestFindSimilarFindingsResponse

FindSimilarFindings returns findings semantically similar to the given finding.

GetAttackChains

GetAttackChainsRequestGetAttackChainsResponse

GetAttackChains returns multi-hop attack paths from a starting technique.

GetCredential

GetCredentialRequestGetCredentialResponse

GetCredential retrieves a tenant-scoped credential by name.

GetFindings

GetFindingsRequestGetFindingsResponse

GetFindings queries previously submitted findings with optional filters.

GetMissionResults

GetMissionResultsRequestGetMissionResultsResponse

GetMissionResults returns the final results of a completed mission.

GetMissionRunHistory

GetMissionRunHistoryRequestGetMissionRunHistoryResponse

GetMissionRunHistory returns summaries of previous mission runs.

GetMissionStatus

GetMissionStatusRequestGetMissionStatusResponse

GetMissionStatus returns the current status of a mission.

GetPluginConfig

GetPluginConfigRequestGetPluginConfigResponse

GetPluginConfig retrieves the current configuration and schema for a plugin.

GetRelatedFindings

GetRelatedFindingsRequestGetRelatedFindingsResponse

GetRelatedFindings returns findings related to the given finding via graph edges.

GetRunFindings

GetRunFindingsRequestGetRunFindingsResponse

GetRunFindings queries findings scoped to a specific mission run or across all runs.

GetTaxonomySchema

GetTaxonomySchemaRequestGetTaxonomySchemaResponse

GetTaxonomySchema returns the current taxonomy definition.

Heartbeat

HeartbeatRequestHeartbeatResponse

Heartbeat sends a periodic health pulse. The response indicates whether the component is still considered registered and may carry config updates.

ListAgents

ListAgentsRequestListAgentsResponse

ListAgents returns descriptors for all agents visible to the caller's tenant.

ListAvailablePlugins

ListAvailablePluginsRequestListAvailablePluginsResponse

ListAvailablePlugins returns all plugins registered in the system along with their catalog metadata, health status, and configuration schema.

ListMissions

ListMissionsRequestListMissionsResponse

ListMissions returns missions matching the given filter.

ListTenantPlugins

ListTenantPluginsRequestListTenantPluginsResponse

ListTenantPlugins returns the plugin access records for the calling tenant.

ListTools

ListToolsRequestListToolsResponse

ListTools returns descriptors for all tools visible to the caller's tenant.

PollWork

PollWorkRequestPollWorkResponse

PollWork long-polls for work items assigned to this component instance. Returns when a work item is available or the server-side timeout expires.

Authorized by can_poll_work, not can_execute: PollWork/SubmitResult are the receive-side of dispatch (how a component gets its work), distinct from CallTool/RunMission's drive-side (how a component directs the platform). Sharing can_execute would let a poll-only grant also drive missions. can_poll_work is modeled as can_execute or can_receive_work, so existing can_execute holders keep polling unchanged.

QueryNodes

QueryNodesRequestQueryNodesResponse

QueryNodes searches the knowledge graph using hybrid vector + graph scoring.

QueryPlugin

QueryPluginRequestQueryPluginResponse

QueryPlugin proxies a plugin query request through the agent harness.

QueueToolWork

QueueToolWorkRequestQueueToolWorkResponse

QueueToolWork submits a batch of tool invocations for parallel execution and returns a job ID for tracking.

RegisterComponent

RegisterComponentRequestRegisterComponentResponse

RegisterComponent announces a component to Gibson and receives connection configuration including heartbeat and poll intervals.

ReportStepHints

ReportStepHintsRequestReportStepHintsResponse

ReportStepHints reports planning step hints from an agent back to the orchestrator.

RunMission

RunMissionRequestRunMissionResponse

RunMission queues a mission for execution.

SubmitFinding

SubmitFindingRequestSubmitFindingResponse

SubmitFinding submits a security finding through the agent harness.

SubmitResult

SubmitResultRequestSubmitResultResponse

SubmitResult returns the execution result for a previously polled work item.

Authorized by can_poll_work — see PollWork's comment for why this receive-side RPC does not share can_execute with the drive-side RPCs.

TestPluginConnection

TestPluginConnectionRequestTestPluginConnectionResponse

TestPluginConnection validates connectivity and credentials for a plugin without persisting any state changes.

ToolResults

ToolResultsRequeststream ToolResultsResponse

ToolResults streams results for a previously queued tool batch as each invocation completes.

UpdatePluginConfig

UpdatePluginConfigRequestUpdatePluginConfigResponse

UpdatePluginConfig replaces the configuration for an already-enabled plugin.

WaitMission

WaitMissionRequestWaitMissionResponse

WaitMission blocks until a mission completes or the timeout expires.

Messages

AgentDescriptorProto

AgentDescriptorProto describes a registered agent.

Field#TypeDescription
name1string
version2string
description3string
capabilities4repeated string
target_types5repeated string

CallToolRequest

CallToolRequest is a harness proxy request to execute a tool.

Field#TypeDescription
work_id1string
tool_name2string
input_json3stringinput_json is the JSON-encoded tool input matching the tool's input schema.
timeout_ms4int64

CallToolResponse

CallToolResponse carries the tool execution result.

Field#TypeDescription
output_json1stringoutput_json is the JSON-encoded tool output matching the tool's output schema.
error2ComponentError

CallToolStreamRequest

CallToolStreamRequest is a harness proxy request for streaming tool execution.

Field#TypeDescription
work_id1string
tool_name2string
input_json3string
timeout_ms4int64

CallToolStreamResponse

CallToolStreamResponse is a single event in a streaming tool execution.

Field#TypeDescription
event_type1stringevent_type: "progress", "partial", "warning", "error", "result".
payload_json2stringpayload_json carries event-specific data.
done3booldone is true on the final event.
error4ComponentError

CancelMissionRequest

CancelMissionRequest requests cancellation of a running mission.

Field#TypeDescription
work_id1string
mission_id2string

CancelMissionResponse

CancelMissionResponse is returned after cancellation is requested.

No fields.

CompleteRequest

CompleteRequest is a harness proxy request for a non-streaming LLM completion.

Field#TypeDescription
work_id1stringwork_id ties this request to the active work item for authorization and billing.
slot2stringslot is the named LLM slot defined by the agent (e.g. "primary").
messages3repeated LLMMessage
timeout_ms4int64timeout_ms is the maximum time to wait for the completion.

CompleteResponse

CompleteResponse carries the LLM's reply to a non-streaming completion.

Field#TypeDescription
response1LLMMessage
usage2TokenUsage

CompleteStreamRequest

CompleteStreamRequest is a harness proxy request for a streaming LLM completion.

Field#TypeDescription
work_id1stringwork_id ties this request to the active work item for authorization and billing.
slot2stringslot is the named LLM slot defined by the agent (e.g. "primary").
messages3repeated LLMMessage
timeout_ms4int64timeout_ms is the maximum time to wait for the completion.

CompleteStreamResponse

CompleteStreamResponse is a single chunk in a streaming LLM completion response.

Field#TypeDescription
content1string
done2booldone is true on the final chunk; usage is only populated on the final chunk.
usage3TokenUsage

CompleteStructuredRequest

CompleteStructuredRequest is a harness proxy request for structured JSON output.

Field#TypeDescription
work_id1string
slot2string
messages3repeated LLMMessage
schema_json4stringschema_json is a JSON Schema the LLM output must conform to.
timeout_ms5int64

CompleteStructuredResponse

CompleteStructuredResponse carries the validated structured output.

Field#TypeDescription
result_json1stringresult_json is the JSON output conforming to the requested schema.
usage2TokenUsage

CompleteWithToolsRequest

CompleteWithToolsRequest is a harness proxy request for LLM completion with tool definitions.

Field#TypeDescription
work_id1string
slot2string
messages3repeated LLMMessage
tools4repeated ToolDefinition
timeout_ms5int64

CompleteWithToolsResponse

CompleteWithToolsResponse carries the LLM's reply including any tool calls.

Field#TypeDescription
response1LLMMessage
usage2TokenUsage
tool_calls3repeated ToolCallResult
finish_reason4string

ComponentDescriptor

ComponentDescriptor is the unified persisted description of a component registered in the Gibson ComponentRegistry, regardless of how it is dispatched. Consumers (orchestrator, dashboard, CLI, authz) look up a descriptor by name and switch on dispatch_mode to choose the routing.

Legacy fields (name, version, kind, tags, metadata) describe every component. Sandboxed-dispatch fields (image, command, env, resources, default_timeout_seconds, input_schema_json, output_proto_type, default_parse_quality) are populated by the daemon's catalog refresher for sandboxed tools. Plugin/agent entries leave those fields zero.

Field#TypeDescription
name1stringCommon metadata — populated for every dispatch_mode.
version2string
kind3string
description4string
tags5repeated string
metadata6map<string, string>
dispatch_mode7DispatchMode
image10stringSandboxed-dispatch fields (DISPATCH_MODE_SANDBOXED only). image is an OCI reference pinned by digest for reproducibility.
command11repeated stringcommand is the argv the runner executes inside the microVM.
env12map<string, string>env is static environment variables prepended to every Launch call. The daemon adds GIBSON_TOOL_INPUT_B64 and tracing headers on top.
resources13Resourcesresources is the vCPU + memory budget per sandbox.
default_timeout_seconds14int32default_timeout_seconds bounds the synchronous tool call.
input_schema_json15bytesinput_schema_json is the JSON Schema document describing the tool's typed arguments (fed to the orchestrator LLM for tool_use selection).
output_proto_type16stringoutput_proto_type is the fully-qualified proto message name the tool's response conforms to, e.g. "gibson.tool.nmap.v1.ExecuteResponse".
default_parse_quality17ParseQualitydefault_parse_quality advertises how richly the runner's parser will populate the response's field-100 DiscoveryResult for this tool.
content_trust18ContentTrustcontent_trust classifies the trust level of input data this component processes at call-time. Consumed by the daemon's dispatch policy gate together with dispatch_mode (see ContentTrust doc above). The default zero (CONTENT_TRUST_UNSPECIFIED) is treated as TRUSTED at gate-evaluation time for backward compatibility with descriptors registered before this field existed. NOTE: field 100 is reserved platform-wide for gibson.graphrag.DiscoveryResult on tool response messages (see enterprise/docs/ARCHITECTURE.md); do not assign new fields >= 100 on any component message without coordination.

ComponentError

ComponentError represents a structured error returned by a component or harness operation.

Field#TypeDescription
code1stringcode is a short machine-readable error identifier (e.g. "TOOL_NOT_FOUND").
message2string
retryable3boolretryable indicates whether the caller should attempt to retry the operation.

ComponentMethod

ComponentMethod is the rich, per-method descriptor for a plugin method, carrying the metadata the connector catalog and SearchTools surface to agents.

Field#TypeDescription
name1stringname is the method identifier (matches an entry in RegisterComponentRequest.methods).
description2stringdescription is a human-readable explanation of the method, surfaced in the catalog so an agent can disambiguate similar tools.
input_schema_json3stringinput_schema_json is the JSON-Schema document describing the method's input, when the source provides one (e.g. an MCP vendor's tools/list inputSchema). Optional; empty when unknown.

CreateMissionRequest

CreateMissionRequest creates a new sub-mission.

Field#TypeDescription
work_id1string
mission_definition_json2bytesmission_definition_json is the JSON-encoded mission definition.
target_id3string
opts_json4bytesopts_json is the JSON-encoded mission.CreateMissionOpts.

CreateMissionResponse

CreateMissionResponse carries the created mission info.

Field#TypeDescription
mission_json1bytesmission_json is the JSON-encoded mission.MissionInfo.

DelegateToAgentRequest

DelegateToAgentRequest dispatches a sub-task to another agent.

Field#TypeDescription
work_id1string
agent_name2string
task_json3bytestask_json is the JSON-encoded agent.Task to delegate.

DelegateToAgentResponse

DelegateToAgentResponse carries the delegated agent's result.

Field#TypeDescription
result_json1bytesresult_json is the JSON-encoded agent.Result.

DisablePluginRequest

DisablePluginRequest deactivates the named plugin for the calling tenant.

Field#TypeDescription
plugin_name1stringplugin_name is the unique identifier of the plugin to disable.

DisablePluginResponse

DisablePluginResponse reports the outcome of a disable operation.

Field#TypeDescription
success1boolsuccess is true when the plugin was disabled without error.
message2string

EnablePluginRequest

EnablePluginRequest activates a plugin and optionally supplies initial configuration.

Field#TypeDescription
plugin_name1stringplugin_name is the unique identifier of the plugin to enable.
config_json2stringconfig_json is an optional JSON-encoded configuration blob for the plugin.

EnablePluginResponse

EnablePluginResponse reports the outcome of an enable operation.

Field#TypeDescription
success1boolsuccess is true when the plugin was enabled without error.
message2string

FindSimilarAttacksRequest

FindSimilarAttacksRequest searches for attack patterns similar to the given content.

Field#TypeDescription
work_id1string
content2string
top_k3int32

FindSimilarAttacksResponse

FindSimilarAttacksResponse carries matching attack patterns.

Field#TypeDescription
results_json1bytesresults_json is a JSON-encoded []graphrag.AttackPattern.

FindSimilarFindingsRequest

FindSimilarFindingsRequest searches for findings similar to the given one.

Field#TypeDescription
work_id1string
finding_id2string
top_k3int32

FindSimilarFindingsResponse

FindSimilarFindingsResponse carries matching findings.

Field#TypeDescription
results_json1bytesresults_json is a JSON-encoded []graphrag.FindingNode.

GetAttackChainsRequest

GetAttackChainsRequest requests multi-hop attack paths from a technique.

Field#TypeDescription
work_id1string
technique_id2string
max_depth3int32

GetAttackChainsResponse

GetAttackChainsResponse carries attack chain results.

Field#TypeDescription
results_json1bytesresults_json is a JSON-encoded []graphrag.AttackChain.

GetCredentialRequest

GetCredentialRequest retrieves a tenant-scoped credential.

Field#TypeDescription
work_id1string
name2string

GetCredentialResponse

GetCredentialResponse carries the credential.

Field#TypeDescription
credential_json1bytescredential_json is the JSON-encoded types.Credential.

GetFindingsRequest

GetFindingsRequest queries previously submitted findings.

Field#TypeDescription
work_id1string
filter_json2bytesfilter_json is a JSON-encoded finding.Filter.

GetFindingsResponse

GetFindingsResponse carries matching findings.

Field#TypeDescription
findings_json1bytesfindings_json is a JSON-encoded []*finding.Finding.

GetMissionResultsRequest

GetMissionResultsRequest requests the final results of a mission.

Field#TypeDescription
work_id1string
mission_id2string

GetMissionResultsResponse

GetMissionResultsResponse carries the mission results.

Field#TypeDescription
result_json1bytesresult_json is the JSON-encoded mission.MissionResult.

GetMissionRunHistoryRequest

GetMissionRunHistoryRequest requests summaries of previous mission runs.

Field#TypeDescription
work_id1string

GetMissionRunHistoryResponse

GetMissionRunHistoryResponse carries run summaries.

Field#TypeDescription
runs_json1bytesruns_json is the JSON-encoded []types.MissionRunSummary.

GetMissionStatusRequest

GetMissionStatusRequest requests the current status of a mission.

Field#TypeDescription
work_id1string
mission_id2string

GetMissionStatusResponse

GetMissionStatusResponse carries the mission status.

Field#TypeDescription
status_json1bytesstatus_json is the JSON-encoded mission.MissionStatusInfo.

GetPluginConfigRequest

GetPluginConfigRequest requests the current configuration for a named plugin.

Field#TypeDescription
plugin_name1stringplugin_name is the unique identifier of the plugin to inspect.

GetPluginConfigResponse

GetPluginConfigResponse carries the stored configuration and its schema.

Field#TypeDescription
config_json1stringconfig_json is the JSON-encoded configuration currently stored for the plugin.
config_schema_json2stringconfig_schema_json is the JSON Schema document describing the plugin's configurable fields.

GetRelatedFindingsRequest

GetRelatedFindingsRequest requests findings related via graph relationships.

Field#TypeDescription
work_id1string
finding_id2string

GetRelatedFindingsResponse

GetRelatedFindingsResponse carries related findings.

Field#TypeDescription
results_json1bytesresults_json is a JSON-encoded []graphrag.FindingNode.

GetRunFindingsRequest

GetRunFindingsRequest queries findings scoped to mission runs.

Field#TypeDescription
work_id1string
scope2stringscope: "previous" for prior run, "all" for all runs.
filter_json3bytesfilter_json is a JSON-encoded finding.Filter.

GetRunFindingsResponse

GetRunFindingsResponse carries matching run-scoped findings.

Field#TypeDescription
findings_json1bytesfindings_json is a JSON-encoded []*finding.Finding.

GetTaxonomySchemaRequest

GetTaxonomySchemaRequest requests the current taxonomy definition.

Field#TypeDescription
work_id1string

GetTaxonomySchemaResponse

GetTaxonomySchemaResponse carries the taxonomy schema.

Field#TypeDescription
schema_json1bytesschema_json is the JSON-encoded taxonomy definition.

HeartbeatRequest

HeartbeatRequest is the periodic health pulse sent by a registered component.

Field#TypeDescription
instance_id1string
health_status2stringhealth_status is the component's self-reported health: "healthy", "degraded", or "unhealthy".
health_message3stringhealth_message provides optional human-readable detail about the health status.

HeartbeatResponse

HeartbeatResponse is returned by the server after each heartbeat.

Field#TypeDescription
registered1boolregistered indicates whether the server still considers this instance registered. A false value means the component must re-register before polling for work.
config_updates2map<string, string>config_updates carries any configuration values that have changed since the last heartbeat. The component should merge these into its running config.

LLMMessage

LLMMessage represents a single message in an LLM conversation.

Tool-call round trips are represented with two message shapes so a multi-turn conversation can replay the full tool history structurally (instead of flattening it into content text):

  1. An assistant turn that requested tool calls sets role to "assistant" and carries the calls in tool_calls (typically copied verbatim from a prior CompleteWithToolsResponse.tool_calls). content holds any accompanying assistant text and may be empty.
  2. A tool-result turn sets role to "tool", tool_call_id to the ToolCallResult.id it answers, and content to the tool's output. One message per tool call; a turn with N tool calls is followed by N tool-result messages.

Both fields are optional: plain role+content messages are unchanged.

Field#TypeDescription
role1stringrole is "system", "user", "assistant", or "tool".
content2string
tool_calls3repeated ToolCallResulttool_calls carries the tool calls an assistant turn requested. Set only when role is "assistant"; empty for all other roles.
tool_call_id4stringtool_call_id identifies which requested tool call this message answers. Set only when role is "tool", in which case content carries the tool's output and this matches the ToolCallResult.id of the corresponding entry in the preceding assistant turn's tool_calls. Empty for all other roles.

ListAgentsRequest

ListAgentsRequest requests descriptors for all available agents.

Field#TypeDescription
work_id1string

ListAgentsResponse

ListAgentsResponse carries all agent descriptors visible to the caller.

Field#TypeDescription
agents1repeated AgentDescriptorProto

ListAvailablePluginsRequest

ListAvailablePluginsRequest is an empty request; filtering may be added in future fields.

No fields.

ListAvailablePluginsResponse

ListAvailablePluginsResponse carries the full catalog of plugins visible to the caller.

Field#TypeDescription
plugins1repeated PluginCatalogEntryProtoplugins is the ordered list of catalog entries for every registered plugin.

ListMissionsRequest

ListMissionsRequest returns missions matching the given filter.

Field#TypeDescription
work_id1string
filter_json2bytesfilter_json is the JSON-encoded mission.MissionFilter.

ListMissionsResponse

ListMissionsResponse carries matching missions.

Field#TypeDescription
missions_json1bytesmissions_json is the JSON-encoded []*mission.MissionInfo.

ListTenantPluginsRequest

ListTenantPluginsRequest is an empty request for the calling tenant's plugin access records.

No fields.

ListTenantPluginsResponse

ListTenantPluginsResponse carries all plugin access records belonging to the calling tenant.

Field#TypeDescription
plugins1repeated PluginAccessProtoplugins is the ordered list of plugin access records for the calling tenant.

ListToolsRequest

ListToolsRequest requests descriptors for all available tools.

Field#TypeDescription
work_id1string

ListToolsResponse

ListToolsResponse carries all tool descriptors visible to the caller.

Field#TypeDescription
tools1repeated ToolDescriptorProto

PluginAccessProto

PluginAccessProto represents the access record linking a tenant to a specific plugin.

Field#TypeDescription
tenant_id1stringtenant_id is the identifier of the tenant that owns this access record.
plugin_name2stringplugin_name is the unique identifier of the plugin.
enabled3boolenabled indicates whether the plugin is currently active for this tenant.
source4stringsource identifies how the tenant gained access to this plugin (e.g. "manual", "helm").
configured_at5stringconfigured_at is the RFC 3339 timestamp of the last configuration change.
configured_by6stringconfigured_by is the identity (user or service account) that applied the last config.
has_config7boolhas_config indicates whether a non-empty configuration blob is stored for this record.

PluginCatalogEntryProto

PluginCatalogEntryProto describes a single plugin as it appears in the catalog.

Field#TypeDescription
name1stringname is the unique identifier for the plugin (e.g. "gitlab").
version2string
description3string
methods4repeated stringmethods lists the callable method names exposed by this plugin.
config_schema_json5stringconfig_schema_json is the JSON Schema document describing the plugin's configurable fields.
enabled6boolenabled indicates whether the plugin is currently active for the calling tenant.
configured7boolconfigured indicates whether the plugin has a non-empty configuration stored.
health_status8stringhealth_status is the last-known health of the plugin: "healthy", "degraded", or "unhealthy".
source9stringsource identifies where this plugin was discovered (e.g. "registry", "local").
instance_count10int32instance_count is the number of running instances currently registered.

PollWorkRequest

PollWorkRequest is sent by a component to request the next available work item.

Field#TypeDescription
instance_id1string
timeout_ms2int32timeout_ms is the maximum duration the server should hold the request open waiting for work before returning an empty response. Should match the value received in RegisterComponentResponse.poll_timeout_ms.

PollWorkResponse

PollWorkResponse carries a single work item for the component to execute. When work_id is empty the poll timed out without available work.

Field#TypeDescription
work_id1stringwork_id uniquely identifies this work item. Must be included in SubmitResult.
work_type2stringwork_type describes what kind of work this is (e.g. "execute", "stream").
payload3bytespayload is the serialized work payload; interpretation depends on work_type.
context4map<string, string>context carries arbitrary key-value metadata associated with this work item.
timeout_ms5int64timeout_ms is the maximum time allowed to complete and submit the result.

QueryNodesRequest

QueryNodesRequest is a harness proxy request for knowledge graph queries.

Field#TypeDescription
work_id1string
query2gibson.graphrag.v1.GraphQuery

QueryNodesResponse

QueryNodesResponse carries knowledge graph query results.

Field#TypeDescription
results1repeated gibson.graphrag.v1.QueryResult

QueryPluginRequest

QueryPluginRequest is a harness proxy request to invoke a plugin method.

Field#TypeDescription
work_id1string
plugin_name2string
method3string
params_json4stringparams_json is the JSON-encoded method parameters.
timeout_ms5int64

QueryPluginResponse

QueryPluginResponse carries the plugin method result.

Field#TypeDescription
result_json1stringresult_json is the JSON-encoded method result.
error2ComponentError

QueueToolWorkRequest

QueueToolWorkRequest submits a batch of tool invocations for parallel execution.

Field#TypeDescription
work_id1string
tool_name2string
inputs_json3repeated stringinputs_json is a list of JSON-encoded tool inputs.

QueueToolWorkResponse

QueueToolWorkResponse carries the assigned job ID for tracking results.

Field#TypeDescription
job_id1string

RegisterComponentRequest

RegisterComponentRequest is sent by a component on startup to announce itself and declare its capabilities.

Field#TypeDescription
kind1stringkind identifies the component type: "agent", "tool", or "plugin".
name2string
version3string
metadata4map<string, string>
capabilities5repeated stringcapabilities lists agent capabilities (used when kind == "agent").
methods6repeated stringmethods lists plugin methods (used when kind == "plugin").
input_message_type7stringinput_message_type is the fully-qualified proto message type for tool input (used when kind == "tool").
output_message_type8stringoutput_message_type is the fully-qualified proto message type for tool output (used when kind == "tool").
file_descriptor_set9bytesfile_descriptor_set is the serialized proto FileDescriptorSet describing the tool's schema (used when kind == "tool").
config_schema_json10stringconfig_schema_json is the JSON Schema document describing the plugin's configuration surface (used when kind == "plugin").
ontology_extension11gibson.graphrag.v1.OntologyExtensionontology_extension carries the component's contribution to the daemon's ontology reasoner (hierarchies, equivalences, IFPs, prefixes). Optional; components that do not author an ontology.yaml leave this unset and the daemon's reasoner is unaffected. Mirrors graphrag.OntologyExtension on the Go side; populated automatically by serve.Tool / serve.Agent when the component implements the optional serve.OntologyContributor interface.
method_descriptors12repeated ComponentMethodmethod_descriptors carries per-method metadata (name + human-readable description + optional JSON-Schema input) for plugin methods. It is the rich superset of methods (which stays for back-compat): methods carries names only; method_descriptors carries the descriptions an agent reads to disambiguate tools in the catalog (SearchTools). Used when kind == "plugin". Empty is valid (older SDKs populate only methods).

RegisterComponentResponse

RegisterComponentResponse carries the assigned instance ID and connection parameters for the component to use going forward.

Field#TypeDescription
instance_id1stringinstance_id is the unique identifier assigned to this component instance.
heartbeat_interval_ms2int32heartbeat_interval_ms is the recommended interval between Heartbeat calls.
poll_interval_ms3int32poll_interval_ms is the recommended interval between PollWork calls when the previous poll returned no work.
poll_timeout_ms4int32poll_timeout_ms is the server-side long-poll timeout the component should pass in PollWorkRequest.timeout_ms.
config5map<string, string>config carries initial configuration values for the component.

ReportStepHintsRequest

ReportStepHintsRequest reports planning step hints from an agent.

Field#TypeDescription
work_id1string
hints_json2byteshints_json is the JSON-encoded planning.StepHints.

ReportStepHintsResponse

ReportStepHintsResponse is returned after hints are accepted.

No fields.

Resources

Resources declares the compute budget a sandboxed component requires per call. Units mirror Kubernetes resource conventions (vcpu is whole CPUs; memory is a quantity string like "256Mi" or "1Gi"). Only meaningful when dispatch_mode == DISPATCH_MODE_SANDBOXED.

Field#TypeDescription
vcpu1int32
memory2string

RunMissionRequest

RunMissionRequest queues a mission for execution.

Field#TypeDescription
work_id1string
mission_id2string
opts_json3bytesopts_json is the JSON-encoded mission.RunMissionOpts.

RunMissionResponse

RunMissionResponse is returned after a mission is queued.

No fields.

SubmitFindingRequest

SubmitFindingRequest is a harness proxy request to record a security finding.

Field#TypeDescription
work_id1string
finding2bytesfinding is the JSON encoding of the SDK finding.Finding struct (see finding/finding.go). NOT a proto-encoded message — the daemon reads it with string(req.Finding). This is distinct from the typed HarnessCallbackService.SubmitFinding RPC, which carries a gibson.types.v1.Finding proto message.

SubmitFindingResponse

SubmitFindingResponse is returned after a finding is accepted.

Field#TypeDescription
finding_id1stringfinding_id is the server-assigned identifier for the recorded finding.

SubmitResultRequest

SubmitResultRequest delivers the outcome of a completed work item back to Gibson.

Field#TypeDescription
work_id1string
result2bytesresult is the serialized result payload.
error3ComponentErrorerror is set when the work item failed; leave unset on success.

SubmitResultResponse

SubmitResultResponse is returned after a result is accepted.

No fields.

TestPluginConnectionRequest

TestPluginConnectionRequest asks the daemon to validate plugin credentials and connectivity without persisting any changes.

Field#TypeDescription
plugin_name1stringplugin_name is the unique identifier of the plugin to test.
config_json2stringconfig_json is the JSON-encoded configuration to test; if empty the stored configuration is used.

TestPluginConnectionResponse

TestPluginConnectionResponse reports the result of a connectivity test.

Field#TypeDescription
success1boolsuccess is true when the plugin endpoint was reachable and credentials were accepted.
message2string
latency_ms3int64latency_ms is the round-trip time of the test probe in milliseconds.

TokenUsage

TokenUsage reports token consumption for an LLM call.

Field#TypeDescription
input_tokens1int32
output_tokens2int32

ToolCallResult

ToolCallResult represents a tool call made by the LLM.

Field#TypeDescription
id1string
name2string
arguments_json3stringarguments is the JSON-encoded arguments the LLM generated for this tool call.

ToolDefinition

ToolDefinition describes a tool available for LLM function calling.

Field#TypeDescription
name1string
description2string
input_schema_json3stringinput_schema is a JSON Schema describing the tool's input parameters.

ToolDescriptorProto

ToolDescriptorProto describes a registered tool.

Field#TypeDescription
name1string
version2string
description3string
tags4repeated string
input_message_type5string
output_message_type6string

ToolResultsRequest

ToolResultsRequest requests streaming results for a previously queued tool batch.

Field#TypeDescription
work_id1string
job_id2string

ToolResultsResponse

ToolResultsResponse is a single result from a queued tool batch.

Field#TypeDescription
index1int32index is the zero-based position in the original inputs array.
output_json2stringoutput_json is the JSON-encoded tool output.
error3ComponentError
done4booldone is true on the final result.

UpdatePluginConfigRequest

UpdatePluginConfigRequest replaces the stored configuration for an enabled plugin.

Field#TypeDescription
plugin_name1stringplugin_name is the unique identifier of the plugin whose config will be updated.
config_json2stringconfig_json is the JSON-encoded configuration blob to persist.

UpdatePluginConfigResponse

UpdatePluginConfigResponse reports the outcome of a config update operation.

Field#TypeDescription
success1boolsuccess is true when the configuration was updated without error.
message2string

WaitMissionRequest

WaitMissionRequest blocks until a mission completes or the timeout expires.

Field#TypeDescription
work_id1string
mission_id2string
timeout_ms3int64timeout_ms is the maximum time to wait. 0 means wait indefinitely.

WaitMissionResponse

WaitMissionResponse carries the final mission result.

Field#TypeDescription
result_json1bytesresult_json is the JSON-encoded mission.MissionResult.

Enums

ContentTrust

ContentTrust classifies the trust level of input data a component will process at call-time. The daemon's dispatch policy gate consults this classification together with dispatch_mode to decide whether a call may proceed: an UNTRUSTED component MUST be dispatched via DISPATCH_MODE_SANDBOXED (microVM) — direct PLUGIN/AGENT execution against UNTRUSTED data is denied unless a platform-operator override is active.

The default zero value (CONTENT_TRUST_UNSPECIFIED) is treated as TRUSTED by the gate for backward compatibility with descriptors registered before this field existed; operators can flip the daemon's strictDefaultUntrusted=true flag to invert that default during a phased rollout.

Value#Description
CONTENT_TRUST_UNSPECIFIED0
CONTENT_TRUST_TRUSTED1CONTENT_TRUST_TRUSTED: input data is sourced from trusted, in-cluster origins (operator-installed plugins, internal services, vetted manifests) and may safely run in PLUGIN/AGENT processes.
CONTENT_TRUST_UNTRUSTED2CONTENT_TRUST_UNTRUSTED: input data is sourced from external networks, user-supplied targets, or third-party feeds (DNS responses, scanned hosts, template downloads, etc.). MUST be dispatched via SANDBOXED execution.

DispatchMode

DispatchMode identifies how the Gibson daemon should dispatch calls to a component registered in the ComponentRegistry. The enum lets one registry serve tools (sandboxed microVM dispatch), plugins (long-running stateful gRPC), and agents (long-running gRPC) uniformly — consumers look up by name and switch on dispatch_mode to choose the route.

Value#Description
DISPATCH_MODE_UNSPECIFIED0
DISPATCH_MODE_SANDBOXED1DISPATCH_MODE_SANDBOXED: the component is a stateless tool executed in an ephemeral Setec microVM. The registry entry carries image/env/ resources used to Launch the sandbox per call.
DISPATCH_MODE_PLUGIN2DISPATCH_MODE_PLUGIN: the component is a long-running plugin process that heartbeats to the registry and serves gRPC.
DISPATCH_MODE_AGENT3DISPATCH_MODE_AGENT: the component is a long-running agent process that heartbeats to the registry and serves gRPC.

ParseQuality

ParseQuality tags how richly a sandboxed-tool response populates its field-100 DiscoveryResult. The taxonomy persistence layer uses this to filter queries by data quality.

Value#Description
PARSE_QUALITY_UNSPECIFIED0
PARSE_QUALITY_STRUCTURED1PARSE_QUALITY_STRUCTURED: response includes fully populated taxonomy nodes (Host, Port, Service, Finding,...).
PARSE_QUALITY_PARTIAL2PARSE_QUALITY_PARTIAL: response includes some taxonomy nodes plus raw output preserved in Evidence nodes.
PARSE_QUALITY_RAW3PARSE_QUALITY_RAW: response preserves stdout as an Evidence node only; no taxonomy-specific nodes were extracted.
PARSE_QUALITY_FAILED4PARSE_QUALITY_FAILED: a parser errored; stdout/stderr preserved for diagnostics, DiscoveryResult is nil.

Package gibson.daemon.v1

Schema evolution policy (mission-schema-canonicalization Requirement 7):

  1. Enum values (MissionStatus, etc.) are append-only. No renumbers, no deletions. Deprecated values use [deprecated = true] plus a // reserved comment.
  2. Message field numbers are append-only. No renumbers, no reuse. Type-of-field changes ARE breaking and require a ship sequence across SDK + every consumer (see ADR 0004 for the precedent).
  3. Cross-file consistency: this file consumes gibson.mission.v1.MissionDefinition AND gibson.mission.v1.MissionConstraints (the canonical platform-wide constraint shape per ADR 0004). The daemon-local MissionConstraints message was removed in the same change. Any breaking change to the canonical SDK type must be coordinated with this file under the canonical ship sequence.

Services

DaemonService

DaemonService provides the gRPC API for Gibson daemon client communication.

This service exposes operational daemon functionality including mission execution, agent management, and real-time event streaming for the TUI and SDK clients.

BuildComponent

BuildComponentRequestBuildComponentResponse

BuildComponent rebuilds a component (agent, tool, or plugin) from source. Useful for rebuilding after manual code changes.

CompleteMissionCUE

CompleteMissionCUERequestCompleteMissionCUEResponse

CompleteMissionCUE returns completion candidates at a cursor position. Powers the dashboard CUE editor's auto-complete.

Connect

ConnectRequestConnectResponse

Connect establishes a client connection to the daemon. Returns connection metadata and daemon version info.

CreateMission

CreateMissionRequestCreateMissionResponse

CreateMission creates a new mission with target and mission-definition reference. Supports both referenced and inline configurations.

CreateMissionDefinition

CreateMissionDefinitionRequestCreateMissionDefinitionResponse

CreateMissionDefinition registers a structured mission definition with the daemon. This is the API-only replacement for the removed InstallMission RPC: the daemon does not clone git repositories or parse YAML; callers submit a fully-formed MissionDefinition proto (serialized from JSON in the CLI via protojson, or constructed natively in the dashboard).

CreateTarget

CreateTargetRequestCreateTargetResponse

CreateTarget registers a new target and returns its server-minted UUID. The id field of the supplied target is ignored; the daemon mints it.

DeleteTarget

DeleteTargetRequestDeleteTargetResponse

DeleteTarget removes a target by its UUID.

GetAgentStatus

GetAgentStatusRequestGetAgentStatusResponse

GetAgentStatus returns the current status of a specific agent.

GetCapabilityManifest

gibson.manifest.v1.GetCapabilityManifestRequestgibson.manifest.v1.GetCapabilityManifestResponse

GetCapabilityManifest returns the signed, versioned capability manifest for the calling principal in their resolved tenant. SDKs call this on session start and on invalidation events. The ADK calls it at scaffold time to discover what components, permissions, cross-component rules, and runtime limits apply.

GetComponentLogs

GetComponentLogsRequeststream GetComponentLogsResponse

GetComponentLogs streams log entries for a component. Supports follow mode for continuous streaming and line limits.

GetMissionDefinition

GetMissionDefinitionRequestGetMissionDefinitionResponse

GetMissionDefinition returns the full structured proto for a single installed mission definition, looked up by name. Use this instead of ListMissionDefinitions when the caller knows the definition name and needs every author-facing field (workspace, constraints, per-node retry/data/reuse policies). Returns codes.NotFound when the name is not registered. Spec: mission-author-experience M5 (gibson#134).

GetMissionGraph

GetMissionGraphRequestGetMissionGraphResponse

GetMissionGraph returns the renderable flow-chart projection of a mission definition: typed nodes (boxes), data-flow edges, derived entry/exit, and per-node positions. The daemon computes the topology and a deterministic auto-layout from the mission DAG, then overlays any saved layout from the mission layout store (SaveMissionLayout) so hand-arranged positions win. This keeps the dashboard a pure renderer — it never re-derives topology. Presentation only: nothing here affects mission execution. Spec: MissionGraph epic (sdk#278).

GetMissionHistory

GetMissionHistoryRequestGetMissionHistoryResponse

GetMissionHistory returns all runs for a mission name, showing the complete history of mission executions with the same mission name.

GetMissionLayout

GetMissionLayoutRequestGetMissionLayoutResponse

GetMissionLayout returns the saved diagram layout (per-node positions + viewport) for a mission definition, or an empty layout when none has been saved. The layout store is separate from the mission definition record — the mission work-schema carries no presentation state. Keyed by mission_definition_id. Spec: MissionGraph epic (sdk#278).

GetMyPermissions

GetMyPermissionsRequestGetMyPermissionsResponse

GetMyPermissions returns the current user's role, is_admin flag, component grants, and team memberships for the current tenant. Used by the dashboard's PermissionsCache to gate UI elements without per-click daemon calls.

Auth: self-mode (spec: self-mode-authz). The hotfix unauthenticated: true is replaced with self: true + allowed_identities: USER. This RPC may be called before the active-tenant cookie is set (which made the earlier tenant_from_identity FGA check fail with "no tenant derivable"), so no FGA tuple lookup is performed. The four defense layers are preserved: (a) Envoy jwt_authn validates the Zitadel JWT before ext-authz. (b) ext-authz mints X-Gibson-Identity-Subject from the verified sub — clients cannot forge it. (c) The daemon's SPIFFE mTLS init is fail-closed (zero-trust-hardening Req 1) so non-Envoy callers cannot reach the listener. (d) ext-authz enforces allowed_identities: only USER tokens are accepted. The handler scopes the response strictly to the caller's verified subject.

GetTarget

GetTargetRequestGetTargetResponse

GetTarget returns a single target by its UUID.

HoverMissionCUE

HoverMissionCUERequestHoverMissionCUEResponse

HoverMissionCUE returns type and documentation for a position in CUE source. Powers the dashboard CUE editor's hover tooltip.

ListAgents

ListAgentsRequestListAgentsResponse

ListAgents returns all registered agents from the etcd registry.

ListMissionDefinitions

ListMissionDefinitionsRequestListMissionDefinitionsResponse

ListMissionDefinitions returns all installed mission definitions.

ListMissions

ListMissionsRequestListMissionsResponse

ListMissions returns all missions (past and active).

ListMyMemberships

ListMyMembershipsRequestListMyMembershipsResponse

ListMyMemberships returns every tenant the authenticated caller is a member of, with the caller's role per tenant. Identity comes from the call context; no tenant_id parameter — this RPC discovers the caller's tenants. Used by the dashboard at sign-in time to populate the tenant picker / set the active-tenant cookie.

Auth: self-mode (spec: self-mode-authz). The hotfix unauthenticated: true is replaced with self: true + allowed_identities: USER. By definition this RPC runs before the caller's active tenant is known, so a tenant_from_identity deriver would always fail "no tenant derivable". The same four defense layers as GetMyPermissions apply; see that method for the full contract. The handler self-scopes the membership list to the verified caller subject.

ListPlugins

ListPluginsRequestListPluginsResponse

ListPlugins returns all registered plugins from the etcd registry.

ListTargets

ListTargetsRequestListTargetsResponse

ListTargets returns the calling tenant's targets, narrowed by TargetFilter.

ListTools

ListToolsRequestListToolsResponse

ListTools returns all registered tools from the etcd registry.

PauseMission

PauseMissionRequestPauseMissionResponse

PauseMission pauses a running mission at the next clean checkpoint boundary. If force is true, pauses immediately without waiting for a clean boundary.

Ping

PingRequestPingResponse

Ping checks if the daemon is responsive. Used for health checks and connection validation.

QueryPlugin

QueryPluginRequestQueryPluginResponse

QueryPlugin executes a method on a plugin and returns the result. The plugin must be registered in the etcd registry.

RenewCapabilityGrant

RenewCapabilityGrantRequestRenewCapabilityGrantResponse

RenewCapabilityGrant mints a fresh capability-grant JWT for an ongoing mission task whose existing CG-JWT is approaching its ≤30-minute expiry. Long-running missions (vuln research, broad recon sweeps, multi-host fuzzing) call this before their current CG-JWT expires so callbacks keep flowing without dispatching a fresh task.

Authorization: the caller MUST present a valid (non-expired) CG-JWT whose subject matches the request's agent_id and whose mission_id/task_id match the request. Renewal is rate-limited per agent to prevent abuse.

Spec: unified-identity-and-authorization Requirement 5.8.

ResumeMission

ResumeMissionRequeststream ResumeMissionResponse

ResumeMission resumes a paused mission from its last checkpoint. Returns a stream of mission events as execution continues.

RunMission

RunMissionRequeststream RunMissionResponse

RunMission starts a mission and streams execution events. The stream remains open until the mission completes or is stopped.

SaveMissionLayout

SaveMissionLayoutRequestSaveMissionLayoutResponse

SaveMissionLayout persists a hand-arranged diagram layout for a mission definition into the layout store. Layout-only: it never mutates the mission definition, its nodes/edges/configs, or its cue_source. The optional expected_version enables optimistic concurrency — a stale write (the layout changed underneath) is rejected rather than clobbering. Keyed by mission_definition_id. Spec: MissionGraph epic (sdk#278).

ShowComponent

ShowComponentRequestShowComponentResponse

ShowComponent returns detailed information about a component. Includes manifest, status, paths, and lifecycle information.

StartComponent

StartComponentRequestStartComponentResponse

StartComponent starts a component (agent, tool, or plugin) by kind and name. The component must be installed in the local database.

Status

StatusRequestStatusResponse

Status returns the current daemon status including uptime, service endpoints, and component counts.

StopComponent

StopComponentRequestStopComponentResponse

StopComponent stops a running component (agent, tool, or plugin) by kind and name. If force is true, sends SIGKILL immediately instead of graceful SIGTERM.

StopMission

StopMissionRequestStopMissionResponse

StopMission gracefully stops a running mission.

Subscribe

SubscribeRequeststream SubscribeResponse

Subscribe establishes an event stream for TUI real-time updates. Streams mission events, agent events, finding events, etc.

UpdateMissionDefinition

UpdateMissionDefinitionRequestUpdateMissionDefinitionResponse

UpdateMissionDefinition replaces the content of an existing mission definition. The name field of the embedded definition is the lookup key. All other fields replace the stored definition; the server-assigned ID and original timestamps are preserved. Returns codes.NotFound if no definition with that name exists. Spec: gibson#437.

UpdateTarget

UpdateTargetRequestUpdateTargetResponse

UpdateTarget replaces a target's metadata. The id field is the lookup key and is never changed.

ValidateMissionCUE

ValidateMissionCUERequestValidateMissionCUEResponse

ValidateMissionCUE compiles a CUE mission snippet and returns diagnostics. Powers the dashboard CUE editor's real-time error squiggles, and is now callable by ADK/SDK users with a single user token. An empty diagnostics list means the source is valid.

WatchManifestInvalidations

gibson.manifest.v1.WatchManifestInvalidationsRequeststream gibson.manifest.v1.WatchManifestInvalidationsResponse

WatchManifestInvalidations streams ManifestInvalidationEvents to the caller whenever their resolved tenant's manifest is invalidated (FGA mutation, component registry change, tier update). Heartbeats are emitted periodically to keep the stream alive.

Messages

AgentEvent

AgentEvent represents an agent lifecycle event.

Field#TypeDescription
event_type1stringevent_type identifies the agent event type (registered, unregistered, health_change)
timestamp2int64timestamp is when the event occurred (Unix timestamp)
agent_id3stringagent_id is the agent identifier
agent_name4stringagent_name is the agent name
message5stringmessage is a human-readable message
data6gibson.common.v1.TypedMapdata contains event-specific data (typed map)

AgentInfo

AgentInfo describes a registered agent.

Field#TypeDescription
id1stringid is the unique agent identifier
name2stringname is the agent name
kind3stringkind is the component kind (always "agent")
version4stringversion is the agent version
endpoint5stringendpoint is the gRPC endpoint for the agent
capabilities6repeated stringcapabilities lists agent capabilities
health7stringhealth is the agent health status (healthy, unhealthy)
last_seen8int64last_seen is when the agent was last seen (Unix timestamp)

BuildComponentRequest

BuildComponentRequest requests rebuilding a component from source.

Field#TypeDescription
kind1stringkind is the component kind ("agent", "tool", "plugin")
name2stringname is the component name to build

BuildComponentResponse

BuildComponentResponse returns the result of building a component.

Field#TypeDescription
success1boolsuccess indicates if the build was successful
stdout2stringstdout contains the build standard output
stderr3stringstderr contains the build standard error
duration_ms4int64duration_ms is the build time in milliseconds
message5stringmessage provides additional context or error information

CUECompletionItem

CUECompletionItem is a single completion suggestion from CompleteMissionCUE.

Field#TypeDescription
label1stringlabel is the text to insert (the completion token).
detail2stringdetail is a short type annotation or signature hint.
documentation3stringdocumentation is the Markdown documentation for this item.
kind4stringkind classifies the item: "field" | "value" | "keyword".

CUEDiagnostic

CUEDiagnostic is a single error or warning produced by CUE compilation or schema validation. Line and col are 1-based.

Field#TypeDescription
line1int32line is the 1-based source line number.
col2int32col is the 1-based column offset.
message3stringmessage is the human-readable diagnostic text.
severity4stringseverity is "error" or "warning".

Capabilities

Capabilities describes runtime privileges and features available to a tool.

Field#TypeDescription
has_root1boolhas_root indicates the tool is running as uid 0 (root user)
has_sudo2boolhas_sudo indicates passwordless sudo access is available
can_raw_socket3boolcan_raw_socket indicates the ability to create raw network sockets
features4map<string, bool>features contains tool-specific feature availability flags
blocked_args5repeated stringblocked_args lists command-line arguments that cannot be used
arg_alternatives6map<string, string>arg_alternatives maps blocked arguments to their safer alternatives

CheckpointMetadata

CheckpointMetadata is the lightweight summary of the source checkpoint streamed back on a ResumeMission response so the dashboard can render "Resumed from checkpoint X".

Spec: mission-checkpointing R9.

Field#TypeDescription
checkpoint_id1stringcheckpoint_id is the unique identifier of the source checkpoint.
saved_at_unix_seconds2int64saved_at_unix_seconds is when the checkpoint was captured (Unix epoch seconds).
super_step_number3int32super_step_number identifies which super-step boundary this checkpoint captured (1-based; 0 if not super-step-aligned).
cadence_reason4stringcadence_reason is a free-form classifier for why the checkpoint was taken. Recognised values per R9.1: "super_step", "parallel_group_complete", "approval_required", "graceful_shutdown". Promoted to enum at v1.0.0.
size_bytes5int64size_bytes is the wire size of the checkpoint payload (advisory).

CompleteMissionCUERequest

CompleteMissionCUERequest requests completion items at a cursor position.

Field#TypeDescription
cue_source1stringcue_source is the raw CUE source text at the time of the request.
line2int32line is the 1-based cursor line number.
col3int32col is the 1-based cursor column offset.

CompleteMissionCUEResponse

CompleteMissionCUEResponse returns the completion items for the cursor position.

Field#TypeDescription
items1repeated CUECompletionItemitems is the list of completion candidates.

ConnectRequest

ConnectRequest initiates a client connection to the daemon.

Field#TypeDescription
client_version1stringclient_version is the version of the Gibson CLI client
client_id2stringclient_id is an optional unique identifier for this client

ConnectResponse

ConnectResponse returns connection metadata.

Field#TypeDescription
daemon_version1stringdaemon_version is the version of the running daemon
session_id2stringsession_id is a unique identifier for this client session
grpc_address3stringgrpc_address is the address the daemon is listening on

CreateMissionDefinitionRequest

CreateMissionDefinitionRequest registers a new mission definition with the daemon. The definition is validated server-side via MissionDefinition.Validate and written to the definition store.

Field#TypeDescription
definition1gibson.mission.v1.MissionDefinitiondefinition is the fully-formed mission definition to register.
cue_source2stringcue_source is the raw CUE source text that compiled to definition (maximum 512 KB). Persisted alongside the definition so that GetMissionDefinition can return the author's exact source rather than a reconstruction. Optional for backward compatibility; when empty the definition is stored without a recoverable source.

CreateMissionDefinitionResponse

CreateMissionDefinitionResponse returns the registered mission definition ID and its summary info record.

Field#TypeDescription
mission_definition_id1stringmission_definition_id is the server-assigned identifier for the definition.
info2MissionDefinitionInfoinfo is the summary record for the registered definition.

CreateMissionRequest

CreateMissionRequest requests creation of a new mission. API-only: missions reference a registered target and mission definition by ID. Inline target / inline mission / YAML paths are no longer accepted.

Field#TypeDescription
name1stringname is the mission name
description2stringdescription is the mission description
target_id3stringtarget_id is the ID of a pre-registered target.
mission_definition_id4stringmission_definition_id is the ID of a pre-registered mission definition.
constraints5gibson.mission.v1.MissionConstraintsconstraints defines dispatch-time execution constraints. Canonical type per ADR 0004: gibson.mission.v1.MissionConstraints is the single platform-wide shape. Precedence: dispatch-time constraints (this field) take full precedence over any constraints baked into the referenced MissionDefinition. There is NO per-field merge — if this field is set, the entire dispatch constraint set wins; any field absent from this message reverts to 0 (unlimited), not to the definition's value. To inherit the definition's constraints, leave this field unset (the zero-value message is NOT the same as "absent"). Callers that want partial overrides must read the definition's constraints first and re-supply all fields they wish to preserve. Token budget precedence for per-call caps: dispatch constraints.max_tokens_per_call > definition constraints.max_tokens_per_call > per-node *NodeConfig.max_tokens_per_call (lowest; wins if set) Spec: ADR 0004, mission-schema-canonicalization; gibson#133 (M4).
metadata6map<string, string>metadata provides additional mission metadata
variables7map<string, string>variables contains mission variables to override at creation time
memory_continuity8stringmemory_continuity defines how agent memory is shared across mission runs Valid values: "isolated" (default), "inherit", "shared"
source_yaml9stringsource_yaml is the original YAML the dashboard used to construct this mission. Optional. When non-empty, the daemon stores it alongside the structured mission state. Empty for programmatic callers that never had a YAML source. Spec: dashboard-neo4j-crud-removal Req 3.5.

CreateMissionResponse

CreateMissionResponse returns the result of creating a mission.

Field#TypeDescription
success1boolsuccess indicates if the mission was created successfully
mission2Missionmission is the created mission
message3stringmessage provides additional context or error information

CreateTargetRequest

CreateTargetRequest carries the metadata for a new target.

Field#TypeDescription
target1gibson.target.v1.Targettarget carries the new target's metadata. Its id field is ignored; the daemon mints the canonical UUID.

CreateTargetResponse

CreateTargetResponse returns the minted target.

Field#TypeDescription
target_id1stringtarget_id is the server-minted UUID — the canonical identity clients use to reference this target thereafter.
target2gibson.target.v1.Targettarget is the full stored target, including the minted id and timestamps.

DeleteTargetRequest

DeleteTargetRequest removes a target by UUID.

Field#TypeDescription
target_id1stringtarget_id is the UUID of the target to delete.

DeleteTargetResponse

DeleteTargetResponse reports the outcome of a delete.

Field#TypeDescription
success1bool

Event

Event represents a generic daemon event.

Field#TypeDescription
event_type1stringevent_type identifies the type of event
timestamp2int64timestamp is when the event occurred (Unix timestamp)
source3stringsource is the event source (mission, agent, daemon, etc.)
data4gibson.common.v1.TypedMapdata contains event-specific data (typed map)
mission_event5MissionEvent
agent_event7AgentEvent
finding_event8FindingEvent
tool_event9ToolEvent
llm_event10LLMEvent
orchestrator_event11OrchestratorEvent

oneof event — one of: mission_event, agent_event, finding_event, tool_event, llm_event, orchestrator_event.

FindingEvent

FindingEvent represents a finding discovery event.

Field#TypeDescription
event_type1stringevent_type identifies the finding event type (discovered, updated)
timestamp2int64timestamp is when the event occurred (Unix timestamp)
finding3FindingInfofinding is the finding information
mission_id4stringmission_id is the mission that discovered the finding

FindingInfo

FindingInfo describes a discovered vulnerability.

Field#TypeDescription
id1stringid is the unique finding identifier
title2stringtitle is the finding title
severity3stringseverity is the severity level (info, low, medium, high, critical)
category4stringcategory is the finding category
description5stringdescription is the detailed finding description
technique6stringtechnique is the MITRE ATT&CK or ATLAS technique ID
evidence7stringevidence contains supporting evidence
timestamp8int64timestamp is when the finding was discovered (Unix timestamp)

GetAgentStatusRequest

GetAgentStatusRequest queries a specific agent.

Field#TypeDescription
agent_id1stringagent_id is the unique agent identifier

GetAgentStatusResponse

GetAgentStatusResponse returns agent status.

Field#TypeDescription
agent1AgentInfoagent is the agent information
active2boolactive indicates if the agent is currently executing a task
current_task3stringcurrent_task describes the active task (if any)
task_start_time4int64task_start_time is when the current task started (Unix timestamp)

GetComponentLogsRequest

GetComponentLogsRequest requests log entries for a component.

Field#TypeDescription
kind1stringkind is the component kind ("agent", "tool", "plugin")
name2stringname is the component name to get logs for
follow3boolfollow indicates whether to stream logs continuously
lines4int32lines is the number of lines to return (0 = all, default 50)

GetComponentLogsResponse

GetComponentLogsResponse wraps a LogEntry for the GetComponentLogs streaming RPC.

Field#TypeDescription
timestamp1int64timestamp is when the log entry was created (Unix timestamp)
level2stringlevel is the log level (debug, info, warn, error)
message3stringmessage is the log message
fields4gibson.common.v1.TypedMapfields contains additional structured log fields (typed map)

GetMissionDefinitionRequest

GetMissionDefinitionRequest fetches a single mission definition by name.

Field#TypeDescription
name1stringname is the mission definition name to look up. Case-sensitive; must match the name field used in CreateMissionDefinition.

GetMissionDefinitionResponse

GetMissionDefinitionResponse returns the full structured proto for the requested mission definition. Every author-facing field is present: workspace, constraints, per-node retry/data/reuse policies, etc.

Field#TypeDescription
definition1gibson.mission.v1.MissionDefinitiondefinition is the full mission definition proto. Never nil on success.
mission_definition_id2stringmission_definition_id is the stable server-assigned identifier for this definition (the GUID returned by CreateMissionDefinition, unchanged across updates). Populated on every successful response.
cue_source3stringcue_source is the raw CUE source the author submitted when the definition was created or last updated. Empty for definitions registered before source persistence landed, or registered without a source.

GetMissionGraphRequest

GetMissionGraphRequest selects the mission definition to project.

Field#TypeDescription
mission_definition_id1stringmission_definition_id is the stable id of the registered mission definition (as returned by CreateMissionDefinition / carried on a run).

GetMissionGraphResponse

GetMissionGraphResponse carries the projected, layout-merged graph.

Field#TypeDescription
graph1MissionGraph

GetMissionHistoryRequest

GetMissionHistoryRequest queries mission execution history by name.

Field#TypeDescription
name1stringname is the mission name to query history for
limit2int32limit restricts the number of results (default: 100)
offset3int32offset is the pagination offset (default: 0)

GetMissionHistoryResponse

GetMissionHistoryResponse returns mission execution history.

Field#TypeDescription
runs1repeated MissionRunruns contains all mission runs for the requested name
total2int32total is the total count of runs (for pagination)

GetMissionLayoutRequest

GetMissionLayoutRequest selects the layout to read.

Field#TypeDescription
mission_definition_id1string

GetMissionLayoutResponse

GetMissionLayoutResponse returns the saved layout, or an empty layout (no node positions, empty version) when none has been saved.

Field#TypeDescription
layout1MissionLayout

GetMyPermissionsRequest

GetMyPermissionsRequest queries the caller's permissions within a tenant.

Field#TypeDescription
tenant_id1stringtenant_id is the tenant to scope the query to. If empty, the tenant is inferred from the caller's auth context.

GetMyPermissionsResponse

GetMyPermissionsResponse returns a compact summary of the caller's permissions.

Field#TypeDescription
tenant_id1stringtenant_id is the tenant this summary is scoped to
role2stringrole is the caller's FGA-backed role ("owner", "admin", "operator", "viewer")
is_admin3boolis_admin is true when the caller holds the admin or owner relation on the tenant
component_grants4repeated PermissionComponentGrantcomponent_grants lists the component access grants held by the caller
team_memberships5repeated PermissionTeamMembershipteam_memberships lists the teams the caller belongs to within this tenant

GetTargetRequest

GetTargetRequest looks up a target by UUID.

Field#TypeDescription
target_id1stringtarget_id is the target UUID.

GetTargetResponse

GetTargetResponse returns the requested target.

Field#TypeDescription
target1gibson.target.v1.Target

HoverMissionCUERequest

HoverMissionCUERequest requests hover documentation for a cursor position.

Field#TypeDescription
cue_source1stringcue_source is the raw CUE source text at the time of the request.
line2int32line is the 1-based cursor line number.
col3int32col is the 1-based cursor column offset.

HoverMissionCUEResponse

HoverMissionCUEResponse returns Markdown hover documentation for the symbol under the cursor, or an empty string if there is no hover info.

Field#TypeDescription
markdown1stringmarkdown is the hover documentation rendered as Markdown.

LLMEvent

LLMEvent represents an LLM activity event.

Field#TypeDescription
event_type1stringevent_type identifies the LLM event type (llm.request.started, llm.request.completed, llm.request.failed)
timestamp2int64timestamp is when the event occurred (Unix timestamp)
agent_id3stringagent_id is the agent identifier
agent_name4stringagent_name is the agent name
model5stringmodel is the LLM model identifier (e.g., "claude-3-5-sonnet-20241022")
slot6stringslot is the LLM slot (primary, fast, reasoning)
message_count7int32message_count is the number of messages in the request
prompt_tokens8int32prompt_tokens is the number of input tokens
completion_tokens9int32completion_tokens is the number of output tokens
total_tokens10int32total_tokens is the sum of prompt and completion tokens
duration_ms11doubleduration_ms is the request duration in milliseconds
cached12boolcached indicates if the response was served from cache
error13stringerror contains error information if the event represents a failure
error_code14stringerror_code identifies the error type (rate_limit, context_length, api_error, timeout)
will_retry15boolwill_retry indicates if the failed request will be retried

ListAgentsRequest

ListAgentsRequest queries agent registry.

Field#TypeDescription
kind1stringkind filters by component kind (empty = all agents)

ListAgentsResponse

ListAgentsResponse returns registered agents.

Field#TypeDescription
agents1repeated AgentInfoagents is the list of registered agents

ListMissionDefinitionsRequest

ListMissionDefinitionsRequest queries installed mission definitions.

Field#TypeDescription
limit1int32limit restricts the number of results (0 = all)
offset2int32offset is the pagination offset

ListMissionDefinitionsResponse

ListMissionDefinitionsResponse returns installed mission definitions.

Field#TypeDescription
missions1repeated MissionDefinitionInfomissions is the list of installed mission definitions
total2int32total is the total count of mission definitions (for pagination)

ListMissionsRequest

ListMissionsRequest queries mission list.

Field#TypeDescription
active_only1boolactive_only filters to only running missions
limit2int32limit restricts the number of results
offset3int32offset is the pagination offset
status_filter4stringstatus_filter filters missions by status (running, completed, failed, cancelled)
name_pattern5stringname_pattern filters missions by name using glob pattern matching

ListMissionsResponse

ListMissionsResponse returns mission list.

Field#TypeDescription
missions1repeated MissionInfomissions is the list of missions
total2int32total is the total count of missions (for pagination)

ListMyMembershipsRequest

ListMyMembershipsRequest has no fields. The caller is identified via the call context (HMAC-signed identity headers set by ext-authz). This RPC answers "which tenants am I a member of?" before any tenant-scoped RPC can be made.

No fields.

ListMyMembershipsResponse

ListMyMembershipsResponse returns the caller's tenant memberships. Sorted by tenant_name ASC for stable rendering.

Field#TypeDescription
memberships1repeated Membershipmemberships is the (possibly empty) list of tenants the caller belongs to. An empty list means the caller has no tenant — the dashboard should route to onboarding rather than the picker in that case.

ListPluginsRequest

ListPluginsRequest queries plugin registry.

No fields.

ListPluginsResponse

ListPluginsResponse returns registered plugins.

Field#TypeDescription
plugins1repeated PluginInfoplugins is the list of registered plugins

ListTargetsRequest

ListTargetsRequest narrows the tenant's targets.

Field#TypeDescription
filter1gibson.target.v1.TargetFilterfilter narrows the result set. Omit for the tenant's full target list.

ListTargetsResponse

ListTargetsResponse returns the matching targets.

Field#TypeDescription
targets1repeated gibson.target.v1.Target

ListToolsRequest

ListToolsRequest queries tool registry.

No fields.

ListToolsResponse

ListToolsResponse returns registered tools.

Field#TypeDescription
tools1repeated ToolInfotools is the list of registered tools

LogEntry

LogEntry represents a single log entry from a component.

Field#TypeDescription
timestamp1int64timestamp is when the log entry was created (Unix timestamp)
level2stringlevel is the log level (debug, info, warn, error)
message3stringmessage is the log message
fields4gibson.common.v1.TypedMapfields contains additional structured log fields (typed map)

Membership

Membership describes one tenant the caller is a member of, plus the caller's role in that tenant.

Field#TypeDescription
tenant_id1stringtenant_id is the FGA object id for this tenant (UUID or slug). It is the value the dashboard sets as the x-gibson-tenant header on tenant-scoped RPCs.
tenant_name2stringtenant_name is the human-friendly display name. Best-effort: when the daemon's tenant-name cache misses, this falls back to tenant_id.
role3stringrole is the caller's FGA-backed role within this tenant ("admin" or "member"). Set to "admin" when the caller holds the admin relation on the tenant; otherwise "member".

Mission

Mission represents a complete mission execution instance with full state.

Field#TypeDescription
id1stringid is the unique mission identifier
name2stringname is the human-readable mission name
status3MissionStatusstatus is the current mission status
target_id4stringtarget_id is the target identifier
mission_definition_id5stringmission_definition_id is the mission definition identifier
constraints6gibson.mission.v1.MissionConstraintsconstraints defines execution constraints. Canonical type per ADR 0004: gibson.mission.v1.MissionConstraints is the single platform-wide shape.
metrics7MissionMetricsmetrics contains current execution metrics
checkpoint8MissionCheckpointcheckpoint is the latest checkpoint (if any)
run_number9int32run_number is the sequential run number for this mission name
created_at10int64created_at is when the mission was created (Unix timestamp in milliseconds)
updated_at11int64updated_at is when the mission was last updated (Unix timestamp in milliseconds)
started_at12int64started_at is when the mission execution started (Unix timestamp in milliseconds)
completed_at13int64completed_at is when the mission execution completed (Unix timestamp in milliseconds, 0 if not completed)

MissionCheckpoint

MissionCheckpoint represents a saved checkpoint state for pause/resume.

Field#TypeDescription
id1stringid is the unique checkpoint identifier
version2int32version is the checkpoint format version
completed_nodes3int32completed_nodes is the number of nodes that had completed at checkpoint time
total_nodes4int32total_nodes is the total number of nodes in the mission
created_at5int64created_at is when this checkpoint was created (Unix timestamp in milliseconds)
state_data6bytesstate_data is the serialized checkpoint state (opaque blob)

MissionDefinitionInfo

MissionDefinitionInfo describes an installed mission definition.

Field#TypeDescription
name1stringname is the mission name
version2stringversion is the mission version
description3stringdescription is the mission description
source4stringsource is the Git repository URL
installed_at5int64installed_at is when the mission was installed (Unix timestamp)
updated_at6int64updated_at is when the mission was last updated (Unix timestamp)
node_count7int32node_count is the number of nodes in the mission
mission_definition_id8stringmission_definition_id is the stable server-assigned identifier for this definition (the GUID returned by CreateMissionDefinition, unchanged across updates).

MissionEvent

MissionEvent represents a mission execution event.

Field#TypeDescription
event_type1stringevent_type identifies the type of event
timestamp2int64timestamp is when the event occurred (Unix timestamp)
mission_id3stringmission_id is the unique mission identifier
node_id4stringnode_id is the mission node ID (if applicable)
message5stringmessage is a human-readable event message
data6gibson.common.v1.TypedMapdata contains event-specific data (typed map)
error7stringerror contains error information if the event represents an error
result8OperationResultresult contains typed operation metrics (for mission.completed events)

MissionGraph

MissionGraph is the daemon-computed renderable projection of a mission definition. Node and edge ordering is deterministic.

Field#TypeDescription
nodes1repeated MissionGraphNode
edges2repeated MissionGraphEdge
entry_points3repeated string
exit_points4repeated string
viewport5MissionGraphViewport

MissionGraphEdge

MissionGraphEdge is a renderable data-flow line between two boxes.

Field#TypeDescription
from1string
to2string
condition3stringcondition is the optional CEL guard carried on an explicit mission edge.
role4stringrole is the branch semantics for edges leaving a condition node: "" (default) | "true" | "false".

MissionGraphNode

MissionGraphNode is a renderable box in the mission flow-chart.

Field#TypeDescription
id1stringid is the mission node id this box represents.
kind2stringkind is the renderer classification of the node: "agent" | "tool" | "plugin" | "condition" | "parallel" | "join" | "unknown" (string, not enum, so renderers degrade gracefully on future node kinds).
name3stringname is the human-readable label (falls back to id when unset).
summary4stringsummary is a kind-specific one-line descriptor (agent name, tool name, plugin name+method, condition expression, etc.). May be empty.
is_entry5boolis_entry / is_exit mark mission entry and exit nodes.
is_exit6bool
rank7int32rank is the 0-based topological layer (left-to-right depth).
x8doublex / y are the box position in the renderer's abstract canvas space: the saved layout when present, else the deterministic auto-layout position.
y9double
layout_source10stringlayout_source is "saved" when x/y came from the layout store, "auto" when computed by the deterministic auto-layout.

MissionGraphViewport

MissionGraphViewport is the diagram pan/zoom framing.

Field#TypeDescription
x1double
y2double
zoom3double

MissionInfo

MissionInfo describes a mission.

Field#TypeDescription
id1stringid is the unique mission identifier
status3stringstatus is the mission status (running, completed, failed)
start_time4int64start_time is when the mission started (Unix timestamp)
end_time5int64end_time is when the mission ended (Unix timestamp, 0 if running)
finding_count6int32finding_count is the number of findings discovered
name7stringname is the human-readable mission name
description9stringdescription is the mission description
progress10doubleprogress is the mission completion progress from 0.0 to 1.0
mission_definition_id11stringmission_definition_id is the registered mission definition this run used.
target_id12stringtarget_id is the registered target this mission ran against.

MissionLayout

MissionLayout is the saved diagram layout for a mission definition. It lives in a store separate from the mission definition; the work-schema carries no presentation state.

Field#TypeDescription
mission_definition_id1stringmission_definition_id is the definition this layout belongs to.
nodes2repeated NodePositionnodes are the saved per-node positions. Nodes without an entry fall back to the daemon's deterministic auto-layout in GetMissionGraph.
viewport3MissionGraphViewportviewport is the saved pan/zoom framing (optional).
version4stringversion is an opaque revision token for optimistic concurrency. Empty when no layout has been saved yet. Returned by GetMissionLayout and SaveMissionLayout; pass it back as expected_version on the next save.

MissionMetrics

MissionMetrics contains execution metrics for a mission.

Field#TypeDescription
turns_used1int32turns_used is the number of agent turns/iterations executed
nodes_executed2int32nodes_executed is the number of mission nodes that ran successfully
nodes_failed3int32nodes_failed is the number of mission nodes that failed
findings_count4int32findings_count is the total number of findings discovered
critical_count5int32critical_count is the number of critical severity findings
high_count6int32high_count is the number of high severity findings
medium_count7int32medium_count is the number of medium severity findings
low_count8int32low_count is the number of low severity findings
tokens_used9int64tokens_used is the total LLM tokens consumed

MissionRun

MissionRun represents a single execution instance of a mission.

Field#TypeDescription
mission_id1stringmission_id is the unique identifier for this run
run_number2int32run_number is the sequential run number for this mission name
status3stringstatus is the final status of this run (running, completed, failed, cancelled, paused)
created_at4int64created_at is when this run was created (Unix timestamp)
completed_at5int64completed_at is when this run completed (Unix timestamp, 0 if not completed)
findings_count6int32findings_count is the number of findings discovered in this run
previous_run_id7stringprevious_run_id is the ID of the previous run (if any)
trace_id8stringtrace_id is the OTel trace ID for Langfuse lookup

NodePosition

NodePosition is a single node's saved diagram coordinate.

Field#TypeDescription
node_id1string
x2double
y3double

OperationResult

OperationResult represents the unified result of a long-running operation (attack or mission). This provides typed metrics instead of JSON-encoded strings.

Field#TypeDescription
status1stringstatus of the operation ("success", "failed", "timeout", "cancelled")
duration_ms2int64duration_ms is the total duration in milliseconds
started_at3int64started_at is the Unix timestamp (milliseconds) when the operation started
completed_at4int64completed_at is the Unix timestamp (milliseconds) when the operation completed
turns_used5int32turns_used is the number of agent turns/iterations executed
tokens_used6int64tokens_used is the total LLM tokens consumed
nodes_executed7int32nodes_executed is the number of mission nodes that ran successfully
nodes_failed8int32nodes_failed is the number of mission nodes that failed
findings_count9int32findings_count is the total number of findings discovered
critical_count10int32critical_count is the number of critical severity findings
high_count11int32high_count is the number of high severity findings
medium_count12int32medium_count is the number of medium severity findings
low_count13int32low_count is the number of low severity findings
error_message14stringerror_message contains the error message if status == "failed"
error_code15stringerror_code contains a machine-readable error code if status == "failed"

OrchestratorEvent

OrchestratorEvent represents an orchestrator decision event.

Field#TypeDescription
event_type1stringevent_type identifies the orchestrator event type (orchestrator.decision, orchestrator.approval_required)
timestamp2int64timestamp is when the event occurred (Unix timestamp)
mission_id3stringmission_id is the mission identifier
iteration4int32iteration is the orchestrator iteration number
action5stringaction is the orchestrator action (execute_agent, skip_node, wait, complete, request_approval)
target_node_id6stringtarget_node_id is the mission node ID being targeted
target_agent_name7stringtarget_agent_name is the agent name being targeted
confidence8doubleconfidence is the decision confidence score (0-1)
reasoning9stringreasoning is the orchestrator's reasoning (max 500 chars in practice)
tokens_used10int32tokens_used is the number of tokens consumed for this decision
latency_ms11doublelatency_ms is the decision latency in milliseconds
approval_id12stringapproval_id is set when approval is required
risk13stringrisk is the risk level (low, medium, high, critical)
timeout_seconds14int32timeout_seconds is the timeout for approval requests

PauseMissionRequest

PauseMissionRequest requests pausing a running mission.

Field#TypeDescription
mission_id1stringmission_id is the unique identifier of the mission to pause
force2boolforce indicates whether to pause immediately without waiting for a clean checkpoint boundary If false (default), waits for the current node to complete before pausing

PauseMissionResponse

PauseMissionResponse confirms the mission pause request.

Field#TypeDescription
success1boolsuccess indicates if the pause request was accepted
checkpoint_id2stringcheckpoint_id is the ID of the checkpoint created during pause
message3stringmessage provides additional context about the pause operation

PermissionComponentGrant

PermissionComponentGrant is a compact component grant for use in permissions summaries.

Field#TypeDescription
component_ref1stringcomponent_ref is the component identifier, e.g. "tool:mytool"
actions2repeated stringactions lists the FGA relations the caller holds (execute, configure, read)

PermissionTeamMembership

PermissionTeamMembership describes the caller's membership in a team.

Field#TypeDescription
team_id1stringteam_id is the unique team identifier
team_name2stringteam_name is the human-readable team name
is_admin3boolis_admin is true when the caller is an admin of the team

PingRequest

PingRequest is an empty health check request.

No fields.

PingResponse

PingResponse confirms the daemon is responsive.

Field#TypeDescription
timestamp1int64timestamp is the server time when the ping was received

PluginInfo

PluginInfo describes a registered plugin.

Field#TypeDescription
id1stringid is the unique plugin identifier
name2stringname is the plugin name
version3stringversion is the plugin version
endpoint4stringendpoint is the gRPC endpoint for the plugin
description5stringdescription is the plugin description
health6stringhealth is the plugin health status (healthy, unhealthy)
last_seen7int64last_seen is when the plugin was last seen (Unix timestamp)

QueryPluginRequest

QueryPluginRequest executes a method on a plugin.

Field#TypeDescription
name1stringname is the plugin name to query
method2stringmethod is the method name to execute
params3gibson.common.v1.TypedMapparams is the typed parameters for the method
timeout_ms4int64timeout_ms is the optional timeout in milliseconds (0 = default)

QueryPluginResponse

QueryPluginResponse returns the result of a plugin query.

Field#TypeDescription
result1gibson.common.v1.TypedValueresult is the typed result from the plugin method
error2stringerror is set if the query failed
duration_ms3int64duration_ms is how long the query took in milliseconds

RenewCapabilityGrantRequest

RenewCapabilityGrantRequest carries the identifiers needed to validate the renewal request. The currently-presented CG-JWT (in the X-Capability-Grant header) authorizes the call; this request body just identifies which task is being renewed.

Spec: unified-identity-and-authorization Requirement 5.8.

Field#TypeDescription
agent_id1stringagent_id is the agent's Zitadel service-account ID. Must match the sub claim of the presented CG-JWT.
mission_id2stringmission_id names the mission. Must match the mission_id claim of the presented CG-JWT.
task_id3stringtask_id names the specific task. Must match the task_id claim of the presented CG-JWT.

RenewCapabilityGrantResponse

RenewCapabilityGrantResponse returns the freshly-minted CG-JWT plus its claimed expiry timestamp (Unix seconds, UTC) for client- side scheduling of the next renewal.

Field#TypeDescription
capability_grant1stringcapability_grant is the compact-serialized JWT to attach as the X-Capability-Grant header on subsequent harness callbacks.
expires_at_unix2int64expires_at_unix is the new exp claim, Unix seconds. Clients use this to schedule renewal before expiry.

ResumeMissionRequest

ResumeMissionRequest requests resuming a paused mission.

Field#TypeDescription
mission_id1stringmission_id is the unique identifier of the mission to resume
checkpoint_id2stringcheckpoint_id optionally specifies a specific checkpoint to resume from If empty, resumes from the latest checkpoint
target_checkpoint_id3stringEmpty string = legacy resume-from-latest behaviour (backward compatible). When non-empty, the daemon rewinds the mission to the named checkpoint and resumes execution from that point. The handler additionally enforces the mission#admin FGA relation when this field is non-empty per mission-checkpointing R16.3.

ResumeMissionResponse

ResumeMissionResponse wraps a MissionEvent for the ResumeMission streaming RPC.

Field#TypeDescription
event_type1stringevent_type identifies the type of event
timestamp2int64timestamp is when the event occurred (Unix timestamp)
mission_id3stringmission_id is the unique mission identifier
node_id4stringnode_id is the mission node ID (if applicable)
message5stringmessage is a human-readable event message
data6gibson.common.v1.TypedMapdata contains event-specific data (typed map)
error7stringerror contains error information if the event represents an error
result8OperationResultresult contains typed operation metrics (for mission.completed events)
checkpoint_metadata9CheckpointMetadatacheckpoint_metadata surfaces the source checkpoint metadata at the start of a resumed stream so the dashboard can render the "Resumed from checkpoint X" affordance. Populated on the first event of a resume stream; nil/empty on subsequent events. Spec: mission-checkpointing R9.

RunMissionRequest

RunMissionRequest starts a mission execution. API-only: missions are invoked by reference — no YAML, no file paths.

Field#TypeDescription
mission_definition_id1stringmission_definition_id is the ID of a registered mission definition to execute.
target_id2stringtarget_id is the ID of a registered target the mission runs against.
variables3map<string, string>variables contains mission variables to override
memory_continuity4stringmemory_continuity defines how agent memory is shared across mission runs Valid values: "isolated" (default), "inherit", "shared"

RunMissionResponse

RunMissionResponse wraps a MissionEvent for the RunMission streaming RPC.

Field#TypeDescription
event_type1stringevent_type identifies the type of event
timestamp2int64timestamp is when the event occurred (Unix timestamp)
mission_id3stringmission_id is the unique mission identifier
node_id4stringnode_id is the mission node ID (if applicable)
message5stringmessage is a human-readable event message
data6gibson.common.v1.TypedMapdata contains event-specific data (typed map)
error7stringerror contains error information if the event represents an error
result8OperationResultresult contains typed operation metrics (for mission.completed events)

SaveMissionLayoutRequest

SaveMissionLayoutRequest persists a hand-arranged layout.

Field#TypeDescription
layout1MissionLayoutlayout is the layout to persist. Its mission_definition_id is the key.
expected_version2stringexpected_version, when set, must match the currently-stored layout's version or the save is rejected (codes.Aborted) as a stale write. Empty means "create if absent" / last-write-wins for the first save.

SaveMissionLayoutResponse

SaveMissionLayoutResponse returns the new revision token after a successful save. Pass it as expected_version on the subsequent save.

Field#TypeDescription
version1string

ShowComponentRequest

ShowComponentRequest requests detailed information about a component.

Field#TypeDescription
kind1stringkind is the component kind ("agent", "tool", "plugin")
name2stringname is the component name to show

ShowComponentResponse

ShowComponentResponse returns detailed component information.

Field#TypeDescription
success1boolsuccess indicates if the component was found
name2stringname is the component name
version3stringversion is the component version
kind4stringkind is the component kind
status5stringstatus is the component status (installed, running, stopped)
source6stringsource is the Git repository URL
repo_path7stringrepo_path is the local repository path
bin_path8stringbin_path is the path to the binary
port9int32port is the listening port (if running)
pid10int32pid is the process ID (if running)
created_at11int64created_at is when the component was installed (Unix timestamp)
updated_at12int64updated_at is when the component was last updated (Unix timestamp)
started_at13int64started_at is when the component was started (Unix timestamp, 0 if not running)
stopped_at14int64stopped_at is when the component was stopped (Unix timestamp, 0 if never stopped)
manifest_info15stringmanifest_info contains manifest details (JSON-encoded)
message16stringmessage provides additional context or error information

StartComponentRequest

StartComponentRequest requests starting a component.

Field#TypeDescription
kind1stringkind is the component kind ("agent", "tool", "plugin")
name2stringname is the component name

StartComponentResponse

StartComponentResponse returns the result of starting a component.

Field#TypeDescription
success1boolsuccess indicates if the component was started successfully
pid2int32pid is the process ID of the started component
port3int32port is the port the component is listening on
message4stringmessage provides additional context or error information
log_path5stringlog_path is the path to the component's log file

StatusRequest

StatusRequest queries daemon status.

No fields.

StatusResponse

StatusResponse returns complete daemon status information.

Field#TypeDescription
running1boolrunning indicates if the daemon is running (always true if responding)
pid2int32pid is the process ID of the daemon
start_time3int64start_time is when the daemon started (Unix timestamp)
uptime4stringuptime is the human-readable uptime string
grpc_address5stringgrpc_address is the gRPC server address
registry_type6stringregistry_type is the type of registry (embedded, external)
registry_addr7stringregistry_addr is the registry endpoint address
callback_addr8stringcallback_addr is the callback server address
agent_count9int32agent_count is the number of registered agents
mission_count10int32mission_count is the total number of missions
active_mission_count11int32active_mission_count is the number of currently running missions

StopComponentRequest

StopComponentRequest requests stopping a component.

Field#TypeDescription
kind1stringkind is the component kind ("agent", "tool", "plugin")
name2stringname is the component name
force3boolforce indicates whether to skip graceful shutdown (SIGKILL instead of SIGTERM)

StopComponentResponse

StopComponentResponse returns the result of stopping a component.

Field#TypeDescription
success1boolsuccess indicates if the component was stopped successfully
stopped_count2int32stopped_count is the number of instances successfully stopped
total_count3int32total_count is the total number of instances that were running
message4stringmessage provides additional context or error information

StopMissionRequest

StopMissionRequest requests mission termination.

Field#TypeDescription
mission_id1stringmission_id is the identifier of the mission to stop
force2boolforce indicates whether to force-kill the mission (default: graceful)

StopMissionResponse

StopMissionResponse confirms mission stop request.

Field#TypeDescription
success1boolsuccess indicates if the stop request was accepted
message2stringmessage provides additional context

SubscribeRequest

SubscribeRequest establishes an event stream.

Field#TypeDescription
event_types1repeated stringevent_types filters which event types to receive (empty = all)
mission_id2stringmission_id filters to a specific mission (empty = all)

SubscribeResponse

SubscribeResponse wraps an Event for the Subscribe streaming RPC.

Field#TypeDescription
event_type1stringevent_type identifies the type of event
timestamp2int64timestamp is when the event occurred (Unix timestamp)
source3stringsource is the event source (mission, agent, daemon, etc.)
data4gibson.common.v1.TypedMapdata contains event-specific data (typed map)
mission_event5MissionEvent
agent_event7AgentEvent
finding_event8FindingEvent
tool_event9ToolEvent
llm_event10LLMEvent
orchestrator_event11OrchestratorEvent

oneof event — one of: mission_event, agent_event, finding_event, tool_event, llm_event, orchestrator_event.

ToolEvent

ToolEvent represents a tool execution event.

Field#TypeDescription
event_type1stringevent_type identifies the tool event type (tool.started, tool.completed, tool.failed, tool.progress, tool.warning)
timestamp2int64timestamp is when the event occurred (Unix timestamp)
tool_name3stringtool_name is the name of the tool being executed
agent_id4stringagent_id is the agent identifier executing the tool
agent_name5stringagent_name is the agent name executing the tool
mission_id6stringmission_id is the mission context for this tool execution
message7stringmessage is a human-readable event message
duration8doubleduration is the execution time in seconds (for completed/failed events)
progress9doubleprogress is the completion percentage (0-1 for progress events)
error10stringerror contains error information if the event represents an error
error_code11stringerror_code contains a machine-readable error code
warning12stringwarning contains warning information if the event represents a warning
warning_severity13stringwarning_severity is the severity level (low, medium, high)
data14gibson.common.v1.TypedMapdata contains event-specific data (typed map)

ToolInfo

ToolInfo describes a registered tool.

Field#TypeDescription
id1stringid is the unique tool identifier
name2stringname is the tool name
version3stringversion is the tool version
endpoint4stringendpoint is the gRPC endpoint for the tool
description5stringdescription is the tool description
health6stringhealth is the tool health status (healthy, unhealthy)
last_seen7int64last_seen is when the tool was last seen (Unix timestamp)
capabilities8Capabilitiescapabilities describes runtime privileges and features (optional)

UpdateMissionDefinitionRequest

UpdateMissionDefinitionRequest carries the replacement definition. The name field of the embedded definition is the lookup key.

Field#TypeDescription
definition1gibson.mission.v1.MissionDefinitiondefinition is the replacement content. The name field is used as the lookup key; all other fields replace the stored definition. The server-assigned ID and original timestamps are preserved.
cue_source2stringcue_source is the raw CUE source text that compiled to definition (maximum 512 KB). Overwrites the stored source in place under the stable id. Optional for backward compatibility.

UpdateMissionDefinitionResponse

UpdateMissionDefinitionResponse returns the stable server-assigned ID for the updated definition (unchanged across updates).

Field#TypeDescription
mission_definition_id1stringmission_definition_id is the stable server-assigned identifier for this definition (unchanged across updates).

UpdateTargetRequest

UpdateTargetRequest replaces a target's metadata.

Field#TypeDescription
target1gibson.target.v1.Targettarget is the replacement content. Its id field is the lookup key and is preserved; all other fields replace the stored target.

UpdateTargetResponse

UpdateTargetResponse returns the updated target.

Field#TypeDescription
target1gibson.target.v1.Target

ValidateMissionCUERequest

ValidateMissionCUERequest carries raw CUE source text to validate.

Field#TypeDescription
cue_source1stringcue_source is the raw CUE source text.

ValidateMissionCUEResponse

ValidateMissionCUEResponse returns the diagnostics produced by compiling the submitted CUE source against the mission schema. An empty list means the source is valid.

Field#TypeDescription
diagnostics1repeated CUEDiagnosticdiagnostics is the list of errors and warnings. Empty on success.
compiled_definition2gibson.mission.v1.MissionDefinitioncompiled_definition is the MissionDefinition proto produced by compiling the CUE source. Only populated when diagnostics is empty (i.e. the source is valid). Callers can pass this directly to CreateMissionDefinition without a separate compile round-trip.

Enums

MissionStatus

MissionStatus represents the execution status of a mission.

Value#Description
MISSION_STATUS_UNSPECIFIED0
MISSION_STATUS_PENDING1
MISSION_STATUS_RUNNING2
MISSION_STATUS_PAUSED3
MISSION_STATUS_COMPLETED4
MISSION_STATUS_FAILED5
MISSION_STATUS_CANCELLED6

Package gibson.graph.v1

Services

GraphService

GraphService serves per-tenant knowledge-graph reads and a server-streaming update feed. Every RPC routes through Pool.For(tenant).Neo4j server-side and is gated by the FGA tenant.member relation at ext-authz.

GetFindingCounts

GetFindingCountsRequestGetFindingCountsResponse

GetFindingCounts returns finding counts grouped by severity or category. Replaces the dashboard's prior direct-Neo4j paths in the dashboard data client (getKPIs, getFindingsBySeverity, getFindingsByCategory) and app/api/findings/counts/route.ts.

GetFindingTimeSeries

GetFindingTimeSeriesRequestGetFindingTimeSeriesResponse

GetFindingTimeSeries returns finding counts bucketed by day for the last N days (default 30, max 365). Missing days are returned as zero buckets.

GetFindings

GetFindingsRequestGetFindingsResponse

GetFindings returns a paginated, filterable list of findings (and vulnerabilities) for the calling tenant. Replaces the dashboard's direct-Neo4j paths in app/api/findings/route.ts, app/api/missions/[id]/findings/route.ts, and the iteration backing findings export. Spec: dashboard-neo4j-crud-removal Req 1.

GetGraphContext

GetGraphContextRequestGetGraphContextResponse

GetGraphContext returns a focus node and its bounded neighborhood, used by the chatbot to enrich its system prompt. Returns an empty response (focus_node unset) on missing node or NotProvisioned — does NOT error, so the chatbot prompt never breaks.

GetGraphStats

GetGraphStatsRequestGetGraphStatsResponse

GetGraphStats returns aggregate stats for the per-tenant knowledge graph: node counts by label, total edges, last-write timestamp.

GetGraphSummary

GetGraphSummaryRequestGetGraphSummaryResponse

GetGraphSummary returns an LLM-friendly text summary of the per-tenant graph plus structured stats. Server-side caches results for 60s per tenant.

GetMissionGraph

GetMissionGraphRequestGetMissionGraphResponse

GetMissionGraph returns the subgraph touched by a single mission run. Mission ownership is enforced by FGA + by WHERE m.tenant_id = $tenant in the underlying Cypher (defense in depth).

GetTenantGraph

GetTenantGraphRequestGetTenantGraphResponse

GetTenantGraph returns the full per-tenant subgraph subject to a server-side node-count cap. Use limit + include_labels to narrow scope.

QueryPaths

QueryPathsRequestQueryPathsResponse

QueryPaths runs a bounded path query from from_node_id to either a specific to_node_id or any node of to_node_kind, up to max_depth. Server caps: depth ≤ 10, paths ≤ 100, query timeout 5s.

WatchGraphUpdates

WatchGraphUpdatesRequeststream GraphUpdate

WatchGraphUpdates server-streams new node/edge writes for the calling tenant. Subscribers should treat the stream as a UX hint, not a source of truth — drops are possible under load. Reconnect with exponential backoff; fall back to polling GetTenantGraph if the stream stays unhealthy.

Messages

CountBucket

Field#TypeDescription
label1string
count2uint64

Edge

Edge is a single relationship between two nodes.

Field#TypeDescription
id1string
source_id2string
target_id3string
type4string
properties5map<string, string>

Finding

Finding is a per-tenant security finding or vulnerability node from the knowledge graph, shaped for dashboard list/detail views.

Field#TypeDescription
id1string
name2string
description3string
type4stringCategory / type. Free-form string drawn from the underlying node's type property (e.g. "sql_injection", "exposed_secret").
severity5string"critical" | "high" | "medium" | "low" | "info" (lowercase, free-form).
mission_id6string
created_at7google.protobuf.Timestamp
properties8map<string, string>Catch-all for additional properties beyond the structured fields above (CVE, CVSS, etc.). Values are stringified to preserve fidelity through proto3.
labels9repeated stringDistinguishes:Finding from:Vulnerability and any future label split.

GetFindingCountsRequest

Field#TypeDescription
group_by1FindingCountGroupBy
time_window_seconds2uint64Optional. When > 0, only count findings whose created_at is within the last N seconds. 0 (default) means all-time.

GetFindingCountsResponse

Field#TypeDescription
buckets1repeated CountBucket

GetFindingTimeSeriesRequest

Field#TypeDescription
days1uint32Default 30, max 365 (server-clamped).

GetFindingTimeSeriesResponse

Field#TypeDescription
points1repeated TimeSeriesPointOrdered, padded with zero buckets for missing days. Length == days.

GetFindingsRequest

Field#TypeDescription
severity_filter1stringExact match. Empty string = no filter.
category_filter2stringExact match on the type / category. Empty string = no filter.
mission_id3stringWhen non-empty, only findings reachable from this mission node within the same tenant (within 3 hops) are returned.
search4stringSubstring match on name OR description (case-insensitive). Empty = no filter.
limit5uint32Default 100, max 500 (server-clamped).
offset6uint32

GetFindingsResponse

Field#TypeDescription
findings1repeated Finding
total2uint64Count of matching findings without limit/offset, for pagination UI.
truncated3boolTrue when total > offset + len(findings).

GetGraphContextRequest

Field#TypeDescription
node_id1string
hops2uint32Default 2, max 5 (server-clamped).
max_nodes3uint32Default 30, max 100 (server-clamped).

GetGraphContextResponse

Field#TypeDescription
focus_node1NodeUnset when the node was not found OR Neo4j is unavailable. The daemon returns this shape (not an error) so chatbot prompts never break.
neighbors2repeated NeighborEdge
summary3stringLLM-friendly text serialization of focus + neighbors.

GetGraphStatsRequest

No fields.

GetGraphStatsResponse

Field#TypeDescription
by_label1repeated NodeCountByLabel
total_nodes2uint64
total_edges3uint64
last_write_at4google.protobuf.TimestampZero when the tenant has never written a node.

GetGraphSummaryRequest

No fields.

GetGraphSummaryResponse

Field#TypeDescription
summary1stringLLM-friendly text summary, capped at ~4000 chars.
stats2GraphSummaryStats

GetMissionGraphRequest

Field#TypeDescription
mission_id1string

GetMissionGraphResponse

Field#TypeDescription
nodes1repeated Node
edges2repeated Edge

GetTenantGraphRequest

Field#TypeDescription
limit1uint32Optional. Default 1000, max 5000 (server-clamped).
include_labels2repeated stringOptional. If non-empty, only nodes carrying ANY of these labels are returned (and their connecting edges).

GetTenantGraphResponse

Field#TypeDescription
nodes1repeated Node
edges2repeated Edge
truncated3boolTrue when total_node_count exceeded the limit and the response was capped.
total_node_count4uint32Total node count for the tenant before truncation. UI should surface a "showing N of M" banner when truncated is true.

GraphSummaryStats

Field#TypeDescription
hosts1uint64
services2uint64
findings3uint64
vulnerabilities4uint64
missions5uint64

GraphUpdate

GraphUpdate is one event on the stream. The daemon may drop subscribers that fall behind; clients SHOULD reconcile via a polling fallback.

Field#TypeDescription
kind1GraphUpdate.Kind
node2Node
edge3Edge
at4google.protobuf.Timestamp

oneof entity — one of: node, edge.

NeighborEdge

Field#TypeDescription
node1Node
relationship2string
direction3string"incoming" or "outgoing"

Node

Node is a single graph node. Properties are JSON-stringified per value to preserve Neo4j integer/temporal type fidelity through proto3.

Field#TypeDescription
id1string
labels2repeated string
properties3map<string, string>
first_seen_at4google.protobuf.Timestamp
severity5stringSeverity tag for finding-class nodes; empty for non-finding labels. Values: "low" | "medium" | "high" | "critical".

NodeCountByLabel

Field#TypeDescription
label1string
count2uint64

Path

Path is an ordered sequence of node ids and edge ids that connects two endpoints.

Field#TypeDescription
node_ids1repeated string
edge_ids2repeated string

QueryPathsRequest

Field#TypeDescription
from_node_id1string
to_node_id2string
to_node_kind3string
max_depth4uint32Optional. Default 5, max 10 (server-clamped).

oneof to — one of: to_node_id, to_node_kind.

QueryPathsResponse

Field#TypeDescription
paths1repeated Path
nodes2repeated NodeDe-duplicated set of nodes referenced by any returned path.
edges3repeated EdgeDe-duplicated set of edges referenced by any returned path.
truncated_paths4boolTrue when the daemon's path-count cap was hit and additional paths were not returned.

TimeSeriesPoint

Field#TypeDescription
date1google.protobuf.Timestamp
count2uint64

WatchGraphUpdatesRequest

No fields.

Enums

FindingCountGroupBy

Value#Description
FINDING_COUNT_GROUP_BY_UNSPECIFIED0
SEVERITY1
CATEGORY2

GraphUpdate.Kind

Value#Description
KIND_UNSPECIFIED0
NODE_ADDED1
EDGE_ADDED2
NODE_UPDATED3

Package gibson.graphrag.v1

Messages

AttackChain

AttackChain is a multi-hop technique sequence discovered by graph traversal.

Field#TypeDescription
id1string
name2string
steps3repeated AttackStep
mission_id4string
confidence5doubleconfidence for the chain as a whole.
severity6string
created_at20int64
updated_at21int64

AttackPattern

AttackPattern is a MITRE ATT&CK-shaped technique record from the tenant graph.

Field#TypeDescription
id1string
technique_id2stringtechnique_id is the ATT&CK identifier, e.g. "T1566".
name3string
description4string
tactics5repeated stringtactics, e.g. ["Initial Access", "Execution"].
platforms6repeated stringplatforms, e.g. ["Windows", "Linux"].
data_sources7repeated string
references8repeated string
created_at20int64
updated_at21int64

AttackStep

AttackStep is one hop in an AttackChain.

Field#TypeDescription
order1int32
technique_id2string
node_id3string
description4string
evidence5repeated stringevidence names the findings supporting this step.
confidence6double

Certificate

Certificate discovered.

Field#TypeDescription
id1optional string
subject2optional string
issuer3optional string
serial_number4optional string
not_before5optional int64
not_after6optional int64
fingerprint_sha2567optional string
san8optional string
parent_id10optional stringParent entity reference (optional - cert can be associated with various entities)
parent_type11optional string

CustomNode

CustomNode for entities not in standard taxonomy.

Field#TypeDescription
node_type1string
id_properties2map<string, string>
properties3map<string, string>
parent_type4optional string
parent_id5map<string, string>
relationship_type6optional string

DiscoveryResult

DiscoveryResult is a standardized container for tool-discovered entities. Tools populate this message and Gibson automatically persists to the graph.

Field#TypeDescription
hosts1repeated HostAsset discoveries
ports2repeated Port
services3repeated Service
endpoints4repeated Endpoint
domains5repeated Domain
subdomains6repeated Subdomain
technologies7repeated Technology
certificates8repeated Certificate
findings9repeated FindingSecurity findings
evidence10repeated Evidence
custom_nodes20repeated CustomNodeCustom extensions
explicit_relationships21repeated ExplicitRelationship
compliance_signals22repeated taxonomy.v1.ComplianceSignalCompliance signals — daemon-emitted observations of harness calls. Populated exclusively by the daemon ComplianceMiddleware (agents and tools never self-report). Routed through the same DiscoveryResult → processor → loader pipeline as asset discoveries so signals land in Neo4j with the EMITTED_SIGNAL parent relationship to the originating agent_run.

Domain

Domain discovered.

Field#TypeDescription
id1optional string
name2string
registrar3optional string
created_date4optional int64
expiry_date5optional int64

Endpoint

Endpoint (URL) on a service.

Field#TypeDescription
id1optional string
service_id2string
url3string
method4optional string
status_code5optional int32
content_type6optional string
content_length7optional int64
title8optional string

Evidence

Evidence for a finding.

Field#TypeDescription
id1optional string
finding_id2string
type3string
content4optional string
url5optional string

ExplicitRelationship

ExplicitRelationship for custom connections.

Field#TypeDescription
from_type1string
from_id2map<string, string>
to_type3string
to_id4map<string, string>
relationship_type5string
properties6map<string, string>

Finding

Finding (vulnerability or security issue).

Field#TypeDescription
id1optional string
title2string
description3optional string
severity4string
confidence5optional double
category6optional string
remediation7optional string
cvss_score8optional double
cve_ids9optional string
parent_id10optional stringParent entity reference (optional - finding can be associated with various entities)
parent_type11optional string

FindingNode

FindingNode is a finding as it appears in the knowledge graph.

Distinct from gibson.types.v1.Finding, which is the submission shape. This is the projected node: what the graph knows about a finding, including its mission and target lineage.

Field#TypeDescription
id1string
title2string
description3string
severity4string
category5string
confidence6double
mission_id7string
target_id8stringtarget_id is empty when the finding is not target-scoped.
created_at20int64
updated_at21int64

GraphNode

GraphNode represents a node in the knowledge graph. This is the proto-canonical representation for storage and query operations.

Field#TypeDescription
id1string
type2string
properties3map<string, Value>
content4stringContent for semantic search (optional)
mission_id10stringScoping fields (injected by harness)
mission_run_id11string
agent_run_id12string
discovered_by13string
discovered_at14int64
created_at20int64Timestamps
updated_at21int64
parent_id30optional stringParent reference
parent_type31optional string
parent_relationship32optional string

GraphQuery

GraphQuery represents a query against the knowledge graph using proto-canonical types.

Field#TypeDescription
text1string
embedding2repeated float
top_k3int32
node_types4repeated string
min_score5double
max_score6double
mission_id7string
mission_run_id8string
scope9QueryScope
filters10map<string, string>
vector_weight11double
graph_weight12double

HierarchyDef

HierarchyDef is one subClassOf assertion within an OntologyExtension. It mirrors the SDK's graphrag.HierarchyDef Go struct.

Field#TypeDescription
node_type1stringnode_type is the GraphRAG node type this entry applies to.
label2stringlabel is the IRI of the child class (prefix:localname form).
sub_class_of3stringsub_class_of is the IRI of the parent class. Empty string denotes a root node with no parent in this ontology.

Host

Host discovered by a tool.

Field#TypeDescription
id1optional string
ip2string
hostname3optional string
state4optional string
os5optional string
os_version6optional string
mac_address7optional string

IFPDef

IFPDef declares an inverse-functional property within an OntologyExtension. It mirrors the SDK's graphrag.IFPDef Go struct.

Field#TypeDescription
node_type1stringnode_type is the GraphRAG node type this IFP applies to.
property2stringproperty is the name of the identity-bearing property on that node type.

ListValue

Field#TypeDescription
values1repeated Value

MapValue

Field#TypeDescription
fields1map<string, Value>

OntologyExtension

OntologyExtension is the proto-canonical form of a parsed ontology.yaml. Components MAY include one in RegisterComponentRequest to contribute hierarchy, equivalence, and identity assertions to the daemon's reasoner.

Mirrors graphrag.OntologyExtension (Go) — the serve.OntologyContributor interface produces the Go value, and PlatformClient.Register converts it to this message via graphrag.OntologyExtensionToProto.

Field#TypeDescription
prefixes1map<string, string>prefixes maps short prefix names to base IRIs, mirroring the prefixes block of the source ontology YAML.
hierarchies2repeated HierarchyDefhierarchies is the ordered list of subClassOf assertions parsed from the YAML.
equivalences3repeated SameAsPairequivalences is the ordered list of sameAs pairs.
ifps4repeated IFPDefifps is the ordered list of inverse-functional property declarations.
raw_triples5bytesraw_triples holds optional Turtle (*.ttl) content supplied alongside the ontology YAML by power users. The daemon SHOULD store this verbatim and MAY parse it in a future milestone. SDK callers MUST NOT rely on the daemon having parsed raw_triples.

Port

Port discovered on a host.

Field#TypeDescription
id1optional string
host_id2string
number3int32
protocol4string
state5optional string
reason6optional string

QueryResult

QueryResult represents a single result from a graph query.

Field#TypeDescription
node1GraphNode
score2double
vector_score3double
graph_score4double
path5repeated string
distance6int32

Relationship

Relationship represents a connection between two nodes.

Field#TypeDescription
id1string
from_id2string
to_id3string
type4string
properties5map<string, Value>
weight6double
mission_id10stringScoping
mission_run_id11string
created_at20int64Timestamps

SameAsPair

SameAsPair is one [iriA, iriB] equivalence assertion in an OntologyExtension. Proto does not have a fixed-length array type, so the pair is modelled as a dedicated message with two named fields to keep the wire shape stable across languages.

Field#TypeDescription
iri_a1string
iri_b2string

Service

Service running on a port.

Field#TypeDescription
id1optional string
port_id2string
name3string
product4optional string
version5optional string
extra_info6optional string
banner7optional string
cpe8optional string

Subdomain

Subdomain under a domain.

Field#TypeDescription
id1optional string
domain_id2string
name3string
full_name4optional string

Technology

Technology detected.

Field#TypeDescription
id1optional string
name2string
version3optional string
category4optional string
confidence5optional int32
cpe6optional string
parent_id10optional stringParent entity reference (optional - tech can be associated with various entities)
parent_type11optional string

Value

Value represents a dynamic property value.

Field#TypeDescription
string_value1string
int_value2int64
double_value3double
bool_value4bool
bytes_value5bytes
timestamp_value6int64
list_value7ListValue
map_value8MapValue

oneof kind — one of: string_value, int_value, double_value, bool_value, bytes_value, timestamp_value, list_value, map_value.

Enums

QueryScope

QueryScope defines the scope of a graph query.

Value#Description
QUERY_SCOPE_UNSPECIFIED0
QUERY_SCOPE_MISSION1
QUERY_SCOPE_MISSION_RUN2
QUERY_SCOPE_GLOBAL3

Package gibson.harness.v1

Services

HarnessCallbackService

HarnessCallbackService provides the harness interface for agents executing in standalone mode. The SDK's CallbackHarness forwards all harness operations to the orchestrator via this service.

Authorize

AuthorizeRequestAuthorizeResponse

Authorization Operations Authorize checks whether the calling component's current work execution is permitted to perform action on resource. The daemon resolves the run_id to a (user_id, tenant_id) pair and consults FGA.

CallToolProto

CallToolProtoRequestCallToolProtoResponse

Tool Operations

CallToolProtoStream

CallToolProtoStreamRequeststream CallToolProtoStreamResponse

CancelMission

CancelMissionRequestCancelMissionResponse

CreateMission

CreateMissionRequestCreateMissionResponse

Mission Management Operations These enable agents to autonomously create, run, and manage missions

DelegateToAgent

DelegateToAgentRequestDelegateToAgentResponse

Agent Operations

DeleteSessionContext

DeleteSessionContextRequestDeleteSessionContextResponse

DevboxExec

DevboxExecRequeststream DevboxExecResponse

DevboxExec runs one command in the caller's session Devbox — a session-lifetime sandbox resolved (and lazily created on first call) by (tenant, session_id), then REUSED across calls in that session. This is deliberately distinct from the per-call SANDBOXED tool path (CallToolProto), which stays one microVM per call; a Devbox holds working state (checkouts, build caches) that per-call isolation would throw away between commands.

FindSimilarAttacks

FindSimilarAttacksRequestFindSimilarAttacksResponse

FindSimilarFindings

FindSimilarFindingsRequestFindSimilarFindingsResponse

GenerateNodeID

GenerateNodeIDRequestGenerateNodeIDResponse

GetAttackChains

GetAttackChainsRequestGetAttackChainsResponse

GetCredential

GetCredentialRequestGetCredentialResponse

Credential Operations

GetFindings

GetFindingsRequestGetFindingsResponse

GetMissionResults

GetMissionResultsRequestGetMissionResultsResponse

GetMissionRunHistory

GetMissionRunHistoryRequestGetMissionRunHistoryResponse

GetMissionStatus

GetMissionStatusRequestGetMissionStatusResponse

GetPlanContext

GetPlanContextRequestGetPlanContextResponse

Planning Operations

GetRelatedFindings

GetRelatedFindingsRequestGetRelatedFindingsResponse

GetRunFindings

GetRunFindingsRequestGetRunFindingsResponse

GetSessionContext

GetSessionContextRequestGetSessionContextResponse

GetTaxonomySchema

GetTaxonomySchemaRequestGetTaxonomySchemaResponse

Taxonomy Operations

LLMComplete

LLMCompleteRequestLLMCompleteResponse

LLM Operations

LLMCompleteStructured

LLMCompleteStructuredRequestLLMCompleteStructuredResponse

LLMCompleteWithTools

LLMCompleteWithToolsRequestLLMCompleteWithToolsResponse

LLMStream

LLMStreamRequeststream LLMStreamResponse

ListAgents

ListAgentsRequestListAgentsResponse

ListMissions

ListMissionsRequestListMissionsResponse

ListPlugins

ListPluginsRequestListPluginsResponse

ListTools

ListToolsRequestListToolsResponse

Observe

ObserveRequestObserveResponse

Observe emits a typed observation into the World (ADR-0007). The brain resolves identity and topology; scope is derived server-side from context.

PutSessionContext

PutSessionContextRequestPutSessionContextResponse

Session-context store: an opaque, versioned blob per (tenant, session_id), persisted in the per-tenant dataplane store. The daemon never interprets the bytes — the component owns its own format. This is the TRUSTED home for a session's local context; it must never be written to the untrusted Devbox volume (that invariant is the client's to keep, but this store is why keeping it costs nothing). Writes are guarded by an etag (If-Match) so concurrent writers cannot clobber each other; the server enforces a TTL and a size cap.

QueryNodes

QueryNodesRequestQueryNodesResponse

Knowledge Operations

The knowledge-graph READ surface. It exists on ComponentService too, and that duplication is deliberate: without it here, a dispatched run holding only its task-scoped callback grant cannot read the tenant graph, and the agent would have to keep a component-scoped grant alive purely to call recall — which defeats the point of scoping the dispatch at all. See zerocool-plugins ADR-0006 and docs/adr/0001-callback-knowledge-reads.md.

Read-only by construction. The write half is NOT mirrored: the projector is the sole graph writer (ADR-0012), and sdk#451 already removed the generic graph-write RPC from ComponentService.

QueryPlugin

QueryPluginRequestQueryPluginResponse

Plugin Operations

QueueToolWork

QueueToolWorkRequestQueueToolWorkResponse

Tool Work Queue Operations

RecordSpan

RecordSpanRequestRecordSpanResponse

Distributed Tracing Operations

RecordSpans

RecordSpansRequestRecordSpansResponse

ReportStepHints

ReportStepHintsRequestReportStepHintsResponse

RunMission

RunMissionRequestRunMissionResponse

SearchTools

SearchToolsRequestSearchToolsResponse

SearchTools returns a small, ranked, authz-filtered set of tools matching a query — the meta-tool surface agents use instead of receiving every tool (ADR-0047 facet 5). Per-tool authorization is enforced inside the handler; this RPC-level gate only checks that the caller may use the harness.

SubmitFinding

SubmitFindingRequestSubmitFindingResponse

Finding Operations

ToolResults

ToolResultsRequeststream ToolResultsResponse

ValidateFinding

ValidateFindingRequestValidateFindingResponse

ValidateGraphNode

ValidateGraphNodeRequestValidateGraphNodeResponse

ValidateRelationship

ValidateRelationshipRequestValidateRelationshipResponse

WaitForMission

WaitForMissionRequestWaitForMissionResponse

WorkspaceCommit

WorkspaceCommitRequestWorkspaceCommitResponse

WorkspaceCommit stages all changes in the workspace and creates a commit with the given message. Returns the commit SHA.

WorkspaceGetInfo

WorkspaceGetInfoRequestWorkspaceGetInfoResponse

WorkspaceGetInfo returns name + path for a single workspace. An empty name resolves to the mission's primary workspace (single-repo case). Returns NOT_FOUND when no workspace with that name exists.

WorkspaceList

WorkspaceListRequestWorkspaceListResponse

WorkspaceList returns metadata for every workspace configured for the calling component's active mission. Returns an empty list when the mission has no workspaces.

WorkspaceListFiles

WorkspaceListFilesRequestWorkspaceListFilesResponse

WorkspaceListFiles returns paths matching the given glob pattern, relative to the workspace root. Result sets larger than 10,000 paths are truncated to the first 10,000 with truncated=true on the response.

WorkspacePush

WorkspacePushRequestWorkspacePushResponse

WorkspacePush pushes committed changes to the remote configured for the workspace. Returns PERMISSION_DENIED on auth failure against the remote.

WorkspaceReadFile

WorkspaceReadFileRequestWorkspaceReadFileResponse

WorkspaceReadFile reads a file from the named workspace. Path is relative to the workspace root. Files larger than 16 MB return RESOURCE_EXHAUSTED; a streaming variant is deferred to a follow-on spec.

WorkspaceWriteFile

WorkspaceWriteFileRequestWorkspaceWriteFileResponse

WorkspaceWriteFile writes content to a file in the named workspace. Path is relative to the workspace root. Content larger than 16 MB returns RESOURCE_EXHAUSTED; a streaming variant is deferred.

WorldView

WorldViewRequestWorldViewResponse

WorldView returns the caller's server-projected slice of the tenant World (ADR-0012, sdk#341's read half). It is the counterpart to Observe: Observe is the agent's only write, WorldView its only read.

The slice is projected by the daemon from the mission record it created — the tenant that owns the World and the scope that bounds the slice are read there, never from this request. WorldViewRequest carries no tenant field and no scope field, so an agent cannot name another tenant's World or a wider slice: both are unrepresentable rather than rejected.

Messages

AccountObservation

AccountObservation reports a discovered account/principal (identity: identifier).

Field#TypeDescription
identifier1string
kind2string

AnyValue

AnyValue represents a dynamically typed value used in attributes.

Field#TypeDescription
string_value1string
bool_value2bool
int_value3int64
double_value4double
bytes_value5bytes

oneof value — one of: string_value, bool_value, int_value, double_value, bytes_value.

AttackChain

Field#TypeDescription
id1string
name2string
severity3string
steps4repeated AttackStep

AttackPattern

Field#TypeDescription
technique_id1string
name2string
description3string
tactics4repeated string
platforms5repeated string
similarity6double

AttackStep

Field#TypeDescription
order1int32
technique_id2string
node_id3string
description4string
confidence5double

AuthorizeRequest

AuthorizeRequest asks the daemon whether the current work execution is permitted to perform action on resource. The daemon resolves run_id to the (user_id, tenant_id) that owns this mission run, then calls FGA.

Field#TypeDescription
run_id1stringrun_id is the mission run ID embedded in the work envelope's AuthzContext. The daemon uses it to look up the active mission's user and tenant.
action2stringaction is one of: execute, configure, read, write. Maps to FGA relation "can_{action}" in the authorization model.
resource3stringresource is the FGA object in "<type>:<name>" format, e.g. "tool:mytool".

AuthorizeResponse

AuthorizeResponse returns the authorization decision.

Field#TypeDescription
allowed1boolallowed is true if the action is permitted, false if denied.
reason2stringreason is a human-readable explanation, populated only on deny. It does not expose internal FGA object names or user IDs.

BasicAuth

BasicAuth represents username/password credentials

Field#TypeDescription
username1string
password2string

CallToolProtoRequest

CallToolProtoRequest invokes a tool using proto-serialized JSON input/output.

Field#TypeDescription
context1ContextInfo
name2string
input_json3bytesJSON-serialized proto request message
input_type4stringFully qualified proto message type name for input (e.g., "gibson.tool.mytool.MyRequest")
output_type5stringFully qualified proto message type name for output (e.g., "gibson.tool.mytool.MyResponse")

CallToolProtoResponse

CallToolProtoResponse returns the tool output as proto-serialized JSON.

Field#TypeDescription
output_json1bytesJSON-serialized proto response message
error2HarnessError

CallToolProtoStreamRequest

CallToolProtoStreamRequest initiates a streaming tool execution.

Field#TypeDescription
context1ContextInfo
name2string
input_json3bytesJSON-serialized proto request message
input_type4stringFully qualified proto message type name for input (e.g., "gibson.tool.mytool.MyRequest")
output_type5stringFully qualified proto message type name for output (e.g., "gibson.tool.mytool.MyResponse")
timeout_ms6int64Optional timeout in milliseconds

CallToolProtoStreamResponse

CallToolProtoStreamResponse streams tool execution events back to the agent.

Field#TypeDescription
progress1ToolProgressEvent
partial2ToolPartialResultEvent
warning3ToolWarningEvent
complete4ToolCompleteEvent
error5ToolErrorEvent
trace_id10string
span_id11string
sequence12int64
timestamp_ms13int64

oneof payload — one of: progress, partial, warning, complete, error.

CancelMissionRequest

CancelMissionRequest requests cancellation of a running mission.

Field#TypeDescription
context1ContextInfo
mission_id2string

CancelMissionResponse

CancelMissionResponse confirms cancellation request.

Field#TypeDescription
error1HarnessError

CertificateObservation

CertificateObservation is a TLS certificate served on a port (identity: fingerprint).

Field#TypeDescription
fingerprint1string
subject2string
issuer3string
not_after4string

ContextInfo

Field#TypeDescription
task_id1string
agent_name2string
trace_id3string
span_id4string
mission_id5string
mission_run_id6stringMission run ID - unique identifier for this specific mission execution. Created by MissionGraphManager.CreateMissionRunNode at mission start. Used for mission-scoped GraphRAG storage (nodes BELONGS_TO mission_run).
agent_run_id7stringAgent run ID - unique identifier for this specific agent execution. Used for DISCOVERED relationships and provenance tracking.
run_number8int32Run number - sequential number for this mission (1, 2, 3...). Used for mission memory queries and historical comparisons.
tool_execution_id9stringTool execution ID - unique identifier for tool execution provenance. Used to create PRODUCED relationships from tool executions to nodes.

CreateMissionRequest

CreateMissionRequest creates a new mission from a mission definition.

Field#TypeDescription
context1ContextInfo
mission_definition_json2bytes
target_id3string
name4string
constraints5MissionConstraintsDeprecated: use canonical_constraints (field 8) instead. constraints uses the harness-local MissionConstraints shape which only carries max_duration_ms (int64 ms), max_tokens, max_cost, and max_findings. It will be removed in a follow-up release once all microVM consumers have migrated to canonical_constraints. See sdk#64 migration plan.
metadata6map<string, gibson.common.v1.TypedValue>
tags7repeated string
canonical_constraints8gibson.mission.v1.MissionConstraintscanonical_constraints carries the platform-canonical gibson.mission.v1.MissionConstraints type (sdk#47 / ADR 0004). Prefer this field over the deprecated constraints (field 5). The daemon merges canonical_constraints with any constraints baked into the mission definition (dispatch wins on conflict). Absent means no dispatch-time constraint overrides.

CreateMissionResponse

CreateMissionResponse returns the created mission info.

Field#TypeDescription
mission1MissionInfo
error2HarnessError

Credential

Field#TypeDescription
name1string
type2CredentialType
api_key3string
bearer_token4string
basic5BasicAuth
oauth6OAuthCredential
custom_secret7string
metadata8map<string, gibson.common.v1.TypedValue>

oneof secret_data — one of: api_key, bearer_token, basic, oauth, custom_secret.

CredentialObservation

CredentialObservation reports a discovered credential (identity: secret hash).

Field#TypeDescription
secret_hash1string
username2string
kind3string

DelegateToAgentRequest

Field#TypeDescription
context1ContextInfo
name2string
task3gibson.types.v1.Task

DelegateToAgentResponse

Field#TypeDescription
result1gibson.types.v1.Result
error2HarnessError

DeleteSessionContextRequest

Field#TypeDescription
context1ContextInfo
session_id2string

DeleteSessionContextResponse

DeleteSessionContextResponse is empty on success; deleting a session that has no blob is a no-op, not an error.

Field#TypeDescription
error1HarnessError

DevboxExecExit

DevboxExecExit is the terminal event of a completed command.

Field#TypeDescription
exit_code1int32

DevboxExecRequest

DevboxExecRequest names the session and the command. No tenant field, no sandbox handle: the Devbox is addressed purely by the server-derived (tenant, session_id) pair.

Field#TypeDescription
context1ContextInfo
session_id2stringsession_id is the agent-chosen opaque session identity shared with the session-context store. Required, non-empty.
argv3repeated stringargv is the command to run, exec-style (argv[0] is the binary). The server does not shell-interpret it; a caller that wants a shell asks for one explicitly (argv = ["sh", "-c", …]).
stdin4bytesstdin is written to the process's standard input and closed. Empty means an immediately-closed stdin, not an open pipe.

DevboxExecResponse

DevboxExecResponse streams interleaved stdio and ends with the exit event. Exactly one exit event terminates a successful stream; a stream that ends without one was cut by transport or server failure and the caller must not assume the command completed.

Field#TypeDescription
stdout1bytesstdout/stderr carry raw chunks in arrival order. Chunk boundaries are transport artifacts, not line boundaries.
stderr2bytes
exit3DevboxExecExit
error4HarnessError

oneof payload — one of: stdout, stderr, exit, error.

DomainObservation

DomainObservation reports a registrable domain seen in scope.

Field#TypeDescription
name1string

EndpointObservation

EndpointObservation is a path observed on a service.

Field#TypeDescription
path1string
status2int32

FindSimilarAttacksRequest

FindSimilarAttacksRequest searches for attack patterns similar to the given content.

Field#TypeDescription
context1ContextInfo
content2string
top_k3int32

FindSimilarAttacksResponse

FindSimilarAttacksResponse carries matching attack patterns.

Field#TypeDescription
results1repeated gibson.graphrag.v1.AttackPattern
error2HarnessError

FindSimilarFindingsRequest

FindSimilarFindingsRequest searches for findings similar to the given one.

Field#TypeDescription
context1ContextInfo
finding_id2string
top_k3int32

FindSimilarFindingsResponse

FindSimilarFindingsResponse carries matching findings.

Field#TypeDescription
results1repeated gibson.graphrag.v1.FindingNode
error2HarnessError

FindingFilter

FindingFilter represents filtering criteria for findings

Field#TypeDescription
mission_id1string
agent_name2string
severity3gibson.types.v1.FindingSeverity
status4gibson.types.v1.FindingStatus
tags5repeated string

FindingNode

Field#TypeDescription
id1string
title2string
description3string
severity4string
category5string
confidence6double
similarity7double

GenerateNodeIDRequest

Field#TypeDescription
context1ContextInfo
node_type2string
properties3map<string, gibson.common.v1.TypedValue>

GenerateNodeIDResponse

Field#TypeDescription
node_id1string
error2HarnessError

GetAttackChainsRequest

GetAttackChainsRequest requests multi-hop attack paths from a technique.

Field#TypeDescription
context1ContextInfo
technique_id2string
max_depth3int32

GetAttackChainsResponse

GetAttackChainsResponse carries attack chain results.

Field#TypeDescription
results1repeated gibson.graphrag.v1.AttackChain
error2HarnessError

GetCredentialRequest

Field#TypeDescription
context1ContextInfo
name2string

GetCredentialResponse

Field#TypeDescription
credential1Credential
error2HarnessError

GetFindingsRequest

GetFindingsRequest queries previously submitted findings.

Field#TypeDescription
context1ContextInfo
filter2FindingFilterfilter is typed for the same reason the responses are: a JSON blob whose schema lives in a comment is a contract nothing checks.

GetFindingsResponse

GetFindingsResponse carries matching findings.

Field#TypeDescription
findings1repeated gibson.types.v1.Finding
error2HarnessError

GetMissionResultsRequest

GetMissionResultsRequest retrieves completed mission results.

Field#TypeDescription
context1ContextInfo
mission_id2string

GetMissionResultsResponse

GetMissionResultsResponse returns mission results.

Field#TypeDescription
result1MissionResult
error2HarnessError

GetMissionRunHistoryRequest

GetMissionRunHistoryRequest asks for every run of the caller's mission.

Field#TypeDescription
context1ContextInfo

GetMissionRunHistoryResponse

GetMissionRunHistoryResponse carries the run summaries.

Field#TypeDescription
runs1repeated gibson.types.v1.MissionRunSummary
error2HarnessError

GetMissionStatusRequest

GetMissionStatusRequest retrieves current mission status.

Field#TypeDescription
context1ContextInfo
mission_id2string

GetMissionStatusResponse

GetMissionStatusResponse returns detailed status info.

Field#TypeDescription
status1MissionStatusInfo
error2HarnessError

GetPlanContextRequest

Field#TypeDescription
context1ContextInfo

GetPlanContextResponse

Field#TypeDescription
plan_context1PlanContext
error2HarnessError

GetRelatedFindingsRequest

GetRelatedFindingsRequest requests findings related via graph relationships.

Field#TypeDescription
context1ContextInfo
finding_id2string

GetRelatedFindingsResponse

GetRelatedFindingsResponse carries related findings.

Field#TypeDescription
results1repeated gibson.graphrag.v1.FindingNode
error2HarnessError

GetRunFindingsRequest

GetRunFindingsRequest queries findings scoped to mission runs.

One RPC with a scope, not one RPC per scope. gibson's harness carried GetPreviousRunFindings and GetAllRunFindings as separate methods; the scope is data, and modelling it as data is what lets a caller pass it through.

Field#TypeDescription
context1ContextInfo
scope2RunScope
filter3FindingFilter

GetRunFindingsResponse

GetRunFindingsResponse carries findings from the selected runs.

Field#TypeDescription
findings1repeated gibson.types.v1.Finding
error2HarnessError

GetSessionContextRequest

Field#TypeDescription
context1ContextInfo
session_id2string

GetSessionContextResponse

Field#TypeDescription
error1HarnessError
data2bytesdata is empty and etag "" when no blob exists for the session (a fresh session is not an error).
etag3string

GetTaxonomySchemaRequest

Field#TypeDescription
context1ContextInfo

GetTaxonomySchemaResponse

Field#TypeDescription
version1string
node_types2repeated TaxonomyNodeType
relationship_types3repeated TaxonomyRelationshipType
techniques4repeated TaxonomyTechnique
target_types5repeated TaxonomyTargetType
technique_types6repeated TaxonomyTechniqueType
capabilities7repeated TaxonomyCapability
error8HarnessError

GraphNode

Field#TypeDescription
id1string
type2string
properties3map<string, gibson.common.v1.TypedValue>
content4string
mission_id5string
agent_name6string
created_at7int64
updated_at8int64

GraphRAGResult

Field#TypeDescription
node1GraphNode
score2double
vector_score3double
graph_score4double
path5repeated string
distance6int32

HarnessAgentDescriptor

Field#TypeDescription
name1string
version2string
description3string
capabilities4repeated string
target_types5repeated string
technique_types6repeated string

HarnessError

Error represents an error response from a callback operation.

Field#TypeDescription
code1gibson.common.v1.ErrorCode
message2string
retryable3bool

HarnessHealthStatus

HealthStatus represents the health status of a service.

Field#TypeDescription
state1string
message2string
checked_at3int64

HarnessPluginDescriptor

Field#TypeDescription
name1string
description2string
version3string
methods4repeated string

HarnessToolDescriptor

Field#TypeDescription
name1string
description2string
input_schema5JSONSchemaNodeStructured schemas with full taxonomy support
output_schema6JSONSchemaNode

HistoricalValueItem

Field#TypeDescription
value1gibson.common.v1.TypedValue
run_number2int32
mission_id3string
stored_at4string

HostObservation

HostObservation reports a host seen at address with optional strong identity signals and the ports observed open in this sighting.

Field#TypeDescription
address1string
ssh_host_key2string
cloud_id3string
ports4repeated PortObservation

JSONSchemaNode

JSONSchemaNode represents a JSON Schema node with taxonomy support. Used for structured schema transmission that preserves taxonomy mappings.

Field#TypeDescription
type1string
description2string
properties3map<string, JSONSchemaNode>
required4repeated string
items5JSONSchemaNode
enum_values6repeated string
format7string
minimum8optional double
maximum9optional double
min_length10optional int32
max_length11optional int32
min_items12optional int32
max_items13optional int32
pattern14optional string
default_value15optional string
nullable16bool
taxonomy17TaxonomyMapping

KeyValue

KeyValue represents a key-value pair used in span attributes.

Field#TypeDescription
key1string
value2AnyValue

LLMCompleteRequest

Field#TypeDescription
context1ContextInfo
slot2string
messages3repeated LLMMessage
temperature4optional doubleCompletion options
max_tokens5optional int32
top_p6optional double
stop7repeated string

LLMCompleteResponse

Field#TypeDescription
content1string
tool_calls2repeated ToolCall
finish_reason3string
usage4TokenUsage
error5HarnessError

LLMCompleteStructuredRequest

Field#TypeDescription
context1ContextInfo
slot2string
messages3repeated LLMMessage
schema_json4string

LLMCompleteStructuredResponse

Field#TypeDescription
result1gibson.common.v1.TypedValue
usage3TokenUsage
error4HarnessError

LLMCompleteWithToolsRequest

Field#TypeDescription
context1ContextInfo
slot2string
messages3repeated LLMMessage
tools4repeated ToolDef

LLMCompleteWithToolsResponse

Field#TypeDescription
content1string
tool_calls2repeated ToolCall
finish_reason3string
usage4TokenUsage
error5HarnessError

LLMMessage

Field#TypeDescription
role1string
content2string
tool_calls3repeated ToolCall
tool_results4repeated ToolResult
name5string

LLMStreamRequest

Field#TypeDescription
context1ContextInfo
slot2string
messages3repeated LLMMessage
temperature4optional doubleCompletion options
max_tokens5optional int32
top_p6optional double
stop7repeated string

LLMStreamResponse

Field#TypeDescription
delta1string
tool_calls2repeated ToolCall
finish_reason3string
usage4TokenUsage
error5HarnessError

ListAgentsRequest

Field#TypeDescription
context1ContextInfo

ListAgentsResponse

Field#TypeDescription
agents1repeated HarnessAgentDescriptor
error2HarnessError

ListMissionsRequest

ListMissionsRequest queries missions matching filter criteria.

Field#TypeDescription
context1ContextInfo
filter2MissionFilter

ListMissionsResponse

ListMissionsResponse returns matching missions.

Field#TypeDescription
missions1repeated MissionInfo
error2HarnessError

ListPluginsRequest

Field#TypeDescription
context1ContextInfo

ListPluginsResponse

Field#TypeDescription
plugins1repeated HarnessPluginDescriptor
error2HarnessError

ListToolsRequest

Field#TypeDescription
context1ContextInfo

ListToolsResponse

Field#TypeDescription
tools1repeated HarnessToolDescriptor
error2HarnessError

LongTermMemoryResult

Field#TypeDescription
id1string
content2string
metadata3map<string, gibson.common.v1.TypedValue>
score4double
created_at5string

MissionConstraints

MissionConstraints limits mission execution to prevent resource exhaustion.

Deprecated: use gibson.mission.v1.MissionConstraints via the canonical_constraints field on CreateMissionRequest instead. This type will be removed in a follow-up release after all microVM consumers have migrated (see sdk#64 migration plan).

Field#TypeDescription
max_duration_ms1int64
max_tokens2int64
max_cost3double
max_findings4int32

MissionFilter

MissionFilter specifies criteria for listing missions.

Field#TypeDescription
status1MissionStatus
target_id2string
parent_mission_id3string
created_after4int64
created_before5int64
tags6repeated string
limit7int32
offset8int32

MissionInfo

MissionInfo provides metadata about a mission.

Field#TypeDescription
id1string
name2string
status3MissionStatus
target_id4string
parent_mission_id5string
created_at6int64
tags7repeated string

MissionMemoryItem

Field#TypeDescription
key1string
value2gibson.common.v1.TypedValue
metadata3map<string, gibson.common.v1.TypedValue>
created_at4string
updated_at5string

MissionMemoryResult

Field#TypeDescription
key1string
value2gibson.common.v1.TypedValue
metadata3map<string, gibson.common.v1.TypedValue>
score4double
created_at5string
updated_at6string

MissionMetrics

MissionMetrics aggregates execution statistics.

Field#TypeDescription
duration_ms1int64
tokens_used2int64
tool_calls3int32
agent_calls4int32
findings_count5int32

MissionResult

MissionResult contains final results of a completed mission.

Field#TypeDescription
mission_id1string
status2MissionStatus
findings3repeated gibson.types.v1.Finding
output4map<string, gibson.common.v1.TypedValue>
metrics5MissionMetrics
error6string
completed_at7int64

MissionRunSummary

MissionRunSummary is the proto wire type for types.MissionRunSummary, used by GetMissionRunHistory to return chronological run records to the SDK CallbackHarness.

Spec: headline-feature-completion R6.1.

Field#TypeDescription
mission_id1stringmission_id uniquely identifies this run.
run_number2int32run_number is the sequential run number for this mission name (1-based).
status3stringstatus is the final status string (running, completed, failed, cancelled, paused).
findings_count4int32findings_count is the number of findings discovered in this run.
created_at_unix5int64created_at is when the run was created (Unix epoch seconds).
completed_at_unix6int64completed_at_unix is when the run completed (Unix epoch seconds, 0 if still running).

MissionStatusInfo

MissionStatusInfo provides detailed status of a running mission.

Field#TypeDescription
status1MissionStatus
progress2double
phase3string
finding_counts4map<string, int32>
token_usage5int64
duration_ms6int64
error7string

NodeReference

NodeReference identifies a node by type and property mappings. Use type="self" to reference the current node being mapped.

Field#TypeDescription
type1string
properties2map<string, string>

OAuthCredential

OAuthCredential represents OAuth tokens

Field#TypeDescription
access_token1string
refresh_token2string
token_type3string
expires_at4int64

ObserveRequest

ObserveRequest carries a typed observation (ADR-0007). Scope is NOT carried — the daemon derives it from the mission context.

Field#TypeDescription
context1ContextInfo
host2HostObservation
domain3DomainObservation
subdomain4SubdomainObservation
credential5CredentialObservation
account6AccountObservation

oneof observation — one of: host, domain, subdomain, credential, account.

ObserveResponse

ObserveResponse acknowledges an observation.

Field#TypeDescription
error1HarnessError

PlanContext

Field#TypeDescription
current_step_index1int32
total_steps2int32
remaining_steps3repeated string
step_budget4int32
mission_budget_remaining5int32

PortObservation

PortObservation is an observed open port and its optional service detail.

Field#TypeDescription
number1int32
protocol2string
service3string
product4string
version5string
endpoints6repeated EndpointObservation
technologies7repeated TechnologyObservation
certificate8CertificateObservation

PropertyMapping

PropertyMapping maps a source field to a target property.

Field#TypeDescription
source1string
target2string
default_value3string
transform4string

PutSessionContextRequest

PutSessionContextRequest writes the session's context blob.

Field#TypeDescription
context1ContextInfo
session_id2stringsession_id — see DevboxExecRequest.session_id; the same identity.
data3bytesdata is the opaque blob. The server enforces a size cap (~8 MB); larger working state belongs in the Devbox, not here.
if_match4stringif_match carries the etag of the version this write is based on. Empty string means "create": the write succeeds only if no blob exists for this session yet. A non-empty etag succeeds only if it names the current version. Either mismatch is rejected — a stale writer learns it lost the race instead of clobbering the winner.

PutSessionContextResponse

Field#TypeDescription
error1HarnessError
etag2stringetag names the version this write produced; pass it as if_match on the next write.

QueryNodesRequest

QueryNodesRequest searches the knowledge graph with hybrid vector + graph scoring.

Field#TypeDescription
context1ContextInfo
query2gibson.graphrag.v1.GraphQuery

QueryNodesResponse

QueryNodesResponse carries knowledge graph query results.

Field#TypeDescription
results1repeated gibson.graphrag.v1.QueryResult
error2HarnessError

QueryPluginRequest

Field#TypeDescription
context1ContextInfo
name2string
method3string
params4map<string, gibson.common.v1.TypedValue>

QueryPluginResponse

Field#TypeDescription
result1gibson.common.v1.TypedValue
error2HarnessError

QueueToolWorkRequest

QueueToolWorkRequest initiates parallel execution of multiple tool invocations.

Field#TypeDescription
context1ContextInfo
tool_name2string
input_jsons3repeated string
input_type4string
output_type5string

QueueToolWorkResponse

QueueToolWorkResponse returns a job ID for tracking the work queue.

Field#TypeDescription
job_id1string
error2HarnessError

RecordSpanRequest

Field#TypeDescription
context1ContextInfo
span2Span

RecordSpanResponse

Field#TypeDescription
error1HarnessError

RecordSpansRequest

Field#TypeDescription
context1ContextInfo
spans2repeated Span

RecordSpansResponse

Field#TypeDescription
error1HarnessError

Relationship

Field#TypeDescription
from_id1string
to_id2string
type3string
properties4map<string, gibson.common.v1.TypedValue>
bidirectional5bool

RelationshipMapping

RelationshipMapping defines relationships between nodes using typed references.

Field#TypeDescription
type1string
from2NodeReference
to3NodeReference
condition4string
rel_properties5repeated PropertyMapping

ReportStepHintsRequest

Field#TypeDescription
context1ContextInfo
hints2StepHints

ReportStepHintsResponse

Field#TypeDescription
error1HarnessError

RunMissionRequest

RunMissionRequest queues a mission for execution.

Field#TypeDescription
context1ContextInfo
mission_id2string
wait3bool
timeout_ms4int64

RunMissionResponse

RunMissionResponse confirms mission execution started.

Field#TypeDescription
error1HarnessError

SearchToolsCandidate

SearchToolsCandidate is one authorized tool the agent may invoke via its canonical id.

Field#TypeDescription
id1stringid is the canonical tool id (mcp:<connector>:<tool> or native:<tool>) the agent passes to invoke the tool.
source2string
connector3string
tool4string
description5string
input_schema_json6stringinput_schema_json is the JSON-Schema input document, when known.

SearchToolsRequest

SearchToolsRequest carries a tool-discovery query: free text plus structured filters. The daemon returns only tools the caller is authorized to invoke.

Field#TypeDescription
context1ContextInfo
query2stringquery is matched (case-insensitively) against tool names and descriptions. Empty matches everything.
sources3repeated stringsources optionally restricts results by source ("mcp", "native"). Empty = all.
connector4stringconnector optionally restricts results to a single connector instance.
limit5int32limit caps the candidate count; zero uses the daemon default.

SearchToolsResponse

SearchToolsResponse is the authz-filtered candidate set.

Field#TypeDescription
candidates1repeated SearchToolsCandidate
error2HarnessError

Span

Span represents a single span in a distributed trace.

Field#TypeDescription
trace_id1string
span_id2string
parent_span_id3string
start_time_unix_nano4int64
end_time_unix_nano5int64
name6string
kind7SpanKind
status_code8StatusCode
status_message9string
attributes10repeated KeyValue
events11repeated SpanEvent

SpanEvent

SpanEvent represents a single event within a span.

Field#TypeDescription
name1string
time_unix_nano2int64
attributes3repeated KeyValue

StepHints

Field#TypeDescription
confidence1double
suggested_next2repeated string
replan_reason3string
key_findings4repeated string

SubdomainObservation

SubdomainObservation reports an FQDN, its parent domain, and resolved addresses.

Field#TypeDescription
fqdn1string
domain2string
addresses3repeated string

SubmitFindingRequest

Field#TypeDescription
context1ContextInfo
finding2gibson.types.v1.Finding

SubmitFindingResponse

Field#TypeDescription
error1HarnessError

TaxonomyCapability

Field#TypeDescription
id1string
name2string
description3string
technique_types4repeated string

TaxonomyMapping

TaxonomyMapping defines how tool output maps to knowledge graph nodes. Uses deterministic ID generation based on identifying properties instead of templates.

Field#TypeDescription
node_type1string
identifying_properties2map<string, string>
properties3repeated PropertyMapping
relationships4repeated RelationshipMapping

TaxonomyNodeType

Field#TypeDescription
id1string
name2string
type3string
category4string
description5string
identifying_properties6repeated string
properties7repeated TaxonomyProperty

TaxonomyProperty

Field#TypeDescription
name1string
type2string
required3bool
description4string
enum_values5repeated string
default_value6string

TaxonomyRelationshipType

Field#TypeDescription
id1string
name2string
type3string
category4string
description5string
from_types6repeated string
to_types7repeated string
properties8repeated TaxonomyProperty
bidirectional9bool

TaxonomyTargetType

Field#TypeDescription
id1string
type2string
name3string
category4string
description5string
required_fields6repeated string
optional_fields7repeated string

TaxonomyTechnique

Field#TypeDescription
technique_id1string
name2string
taxonomy3string
category4string
description5string
tactic6string
platforms7repeated string
mitre_mapping8repeated string

TaxonomyTechniqueType

Field#TypeDescription
id1string
type2string
name3string
category4string
description5string
mitre_ids6repeated string
default_severity7string

TechnologyObservation

TechnologyObservation is a technology fingerprinted on a service.

Field#TypeDescription
name1string
version2string

TokenUsage

Field#TypeDescription
input_tokens1int32
output_tokens2int32
total_tokens3int32

ToolCall

Field#TypeDescription
id1string
name2string
arguments3string

ToolCompleteEvent

ToolCompleteEvent signals successful completion with final output

Field#TypeDescription
output_json1bytes

ToolDef

Field#TypeDescription
name1string
description2string
parameters3JSONSchemaNode

ToolErrorEvent

ToolErrorEvent signals an error during execution

Field#TypeDescription
error1HarnessError
fatal2bool

ToolPartialResultEvent

ToolPartialResultEvent contains partial results during execution

Field#TypeDescription
output_json1bytes
description2string

ToolProgressEvent

ToolProgressEvent indicates progress during tool execution

Field#TypeDescription
percent1int32
stage2string
message3string

ToolResult

Field#TypeDescription
tool_call_id1string
content2string
is_error3bool

ToolResultsRequest

ToolResultsRequest requests streaming results for a queued job.

Field#TypeDescription
context1ContextInfo
job_id2string

ToolResultsResponse

ToolResultsResponse streams individual results as tool executions complete.

Field#TypeDescription
index1int32
output_json2string
output_type3string
error4HarnessError
is_final5bool

ToolWarningEvent

ToolWarningEvent contains non-fatal warnings during execution

Field#TypeDescription
message1string
code2string

TraversalOptions

Field#TypeDescription
max_depth1int32
relationship_types2repeated string
node_types3repeated string
direction4string

TraversalResult

Field#TypeDescription
node1GraphNode
path2repeated string
distance3int32

ValidateFindingRequest

Field#TypeDescription
context1ContextInfo
finding2gibson.types.v1.Finding

ValidateFindingResponse

Field#TypeDescription
valid1bool
errors2repeated ValidationError
warnings3repeated string
error4HarnessError

ValidateGraphNodeRequest

Field#TypeDescription
context1ContextInfo
node_type2string
properties3map<string, gibson.common.v1.TypedValue>

ValidateGraphNodeResponse

Field#TypeDescription
valid1bool
errors2repeated ValidationError
warnings3repeated string
error4HarnessError

ValidateRelationshipRequest

Field#TypeDescription
context1ContextInfo
relationship_type2string
from_node_type3string
to_node_type4string
properties5map<string, gibson.common.v1.TypedValue>

ValidateRelationshipResponse

Field#TypeDescription
valid1bool
errors2repeated ValidationError
warnings3repeated string
error4HarnessError

ValidationError

Field#TypeDescription
field1string
message2string
code3string

ValidationResponse

Field#TypeDescription
valid1bool
errors2repeated ValidationError
warnings3repeated string
error4HarnessError

WaitForMissionRequest

WaitForMissionRequest blocks until mission completion.

Field#TypeDescription
context1ContextInfo
mission_id2string
timeout_ms3int64

WaitForMissionResponse

WaitForMissionResponse returns final mission result.

Field#TypeDescription
result1MissionResult
error2HarnessError

WorkspaceCommitRequest

WorkspaceCommitRequest stages all changes and creates a commit.

Field#TypeDescription
context1ContextInfo
workspace_name2stringEmpty workspace_name resolves to the primary workspace.
message3stringmessage is the commit message. Required.

WorkspaceCommitResponse

WorkspaceCommitResponse carries the new commit's SHA.

Field#TypeDescription
commit_sha1string

WorkspaceGetInfoRequest

WorkspaceGetInfoRequest fetches metadata for a single workspace.

Field#TypeDescription
context1ContextInfo
name2stringEmpty name resolves to the mission's primary workspace (single-repository missions).

WorkspaceGetInfoResponse

WorkspaceGetInfoResponse carries the requested workspace metadata.

Field#TypeDescription
workspace1WorkspaceInfoAbsent on NOT_FOUND.

WorkspaceInfo

WorkspaceInfo is the minimal name + path projection of a workspace.

Field#TypeDescription
name1stringname is the repository identifier from the mission's WorkspaceConfig.
path2stringpath is the absolute path to the workspace root on the daemon. Useful for log attribution; the callback agent does not access this path.

WorkspaceListFilesRequest

WorkspaceListFilesRequest enumerates workspace files matching a glob.

Field#TypeDescription
context1ContextInfo
workspace_name2stringEmpty workspace_name resolves to the primary workspace.
pattern3stringpattern is a glob matched relative to the workspace root. Examples: ".go", "**/.py", "src/**/*.ts".

WorkspaceListFilesResponse

WorkspaceListFilesResponse carries the matched paths, with a truncation flag when the result set exceeded the 10,000-path cap.

Field#TypeDescription
paths1repeated string
truncated2booltruncated is true when the result was capped at 10,000 paths and more matches exist. Refine the pattern to drill in.

WorkspaceListRequest

WorkspaceListRequest enumerates workspaces for the calling mission. The mission scope is derived from the request context (set by the SDK CallbackClient via contextInfo — same pattern as the memory RPCs).

Field#TypeDescription
context1ContextInfo

WorkspaceListResponse

WorkspaceListResponse carries every workspace in the mission.

Field#TypeDescription
workspaces1repeated WorkspaceInfo

WorkspacePushRequest

WorkspacePushRequest pushes committed changes to the workspace's remote.

Field#TypeDescription
context1ContextInfo
workspace_name2stringEmpty workspace_name resolves to the primary workspace.

WorkspacePushResponse

WorkspacePushResponse is empty on success.

No fields.

WorkspaceReadFileRequest

WorkspaceReadFileRequest reads a file from a workspace.

Field#TypeDescription
context1ContextInfo
workspace_name2stringEmpty workspace_name resolves to the primary workspace.
path3stringPath is relative to the workspace root.

WorkspaceReadFileResponse

WorkspaceReadFileResponse carries the file's full content.

Field#TypeDescription
content1bytes

WorkspaceWriteFileRequest

WorkspaceWriteFileRequest writes content to a file in a workspace.

Field#TypeDescription
context1ContextInfo
workspace_name2stringEmpty workspace_name resolves to the primary workspace.
path3stringPath is relative to the workspace root.
content4bytesContent is the new file body. RESOURCE_EXHAUSTED if > 16 MB.

WorkspaceWriteFileResponse

WorkspaceWriteFileResponse is empty on success.

No fields.

WorldEntity

WorldEntity is one entity in the slice.

Field#TypeDescription
handle1stringhandle is the ONLY name the agent has for this entity: an opaque, server-minted, non-constructible reference, valid within the slice it was issued to and nowhere else. It carries no brain id an agent could iterate, so enumerating past the slice boundary is unrepresentable (ADR-0012). A handle stays stable across re-projections of the same slice: the entity it names does not change, so refreshing the view never invalidates a reference the agent is holding.
kind2WorldEntityKind
label3stringlabel is the entity's coordinate as observed — an address, an FQDN, a finding title. Human- and LLM-readable; not a reference (only handle is).
attributes4map<string, string>attributes is the projected detail, level-of-detail summarized for the unfocused slice and complete for a focused one. Keys are server-chosen.

WorldViewRequest

WorldViewRequest asks for the caller's slice of the tenant World.

There is deliberately no tenant field and no scope field. The daemon reads both off the mission record it created, reached through the harness registered for (mission_id, agent_name); context is an address that selects which harness to consult, never an authority over what the slice contains. An agent therefore cannot express "another tenant's World" or "a wider scope" at all.

Field#TypeDescription
context1ContextInfo
focus2repeated stringfocus narrows the response to entities the caller was already shown, by their handles, and returns those at full detail instead of the summary level the unfocused slice carries. A handle that was not issued to this caller is refused — focus can never widen a slice, only zoom into one.

WorldViewResponse

WorldViewResponse carries the projected slice.

Field#TypeDescription
error1HarnessError
entities2repeated WorldEntity
truncated3booltruncated is true when the slice exceeded the projection cap and entities were dropped. The cap is a server-side budget, not something the caller can raise; a truncated slice is still a valid one.

Enums

CredentialType

CredentialType represents the type of credential.

Value#Description
CREDENTIAL_TYPE_UNSPECIFIED0
CREDENTIAL_TYPE_API_KEY1
CREDENTIAL_TYPE_BEARER2
CREDENTIAL_TYPE_BASIC3
CREDENTIAL_TYPE_OAUTH4
CREDENTIAL_TYPE_CUSTOM5

MemoryTier

MemoryTier specifies which memory tier to use for an operation.

Value#Description
MEMORY_TIER_UNSPECIFIED0
MEMORY_TIER_WORKING1
MEMORY_TIER_MISSION2
MEMORY_TIER_LONG_TERM3

MissionStatus

MissionStatus represents the current state of a mission.

Value#Description
MISSION_STATUS_UNSPECIFIED0
MISSION_STATUS_PENDING1
MISSION_STATUS_RUNNING2
MISSION_STATUS_PAUSED3
MISSION_STATUS_COMPLETED4
MISSION_STATUS_FAILED5
MISSION_STATUS_CANCELLED6

RunScope

RunScope selects which mission runs GetRunFindings reads.

Value#Description
RUN_SCOPE_UNSPECIFIED0
RUN_SCOPE_PREVIOUS1RUN_SCOPE_PREVIOUS reads the run immediately before the current one.
RUN_SCOPE_ALL2RUN_SCOPE_ALL reads every run of this mission.

SpanKind

SpanKind represents the role of a span in a distributed trace.

Value#Description
SPAN_KIND_UNSPECIFIED0
SPAN_KIND_INTERNAL1
SPAN_KIND_SERVER2
SPAN_KIND_CLIENT3
SPAN_KIND_PRODUCER4
SPAN_KIND_CONSUMER5

StatusCode

StatusCode represents the status of a span.

Value#Description
STATUS_CODE_UNSPECIFIED0
STATUS_CODE_OK1
STATUS_CODE_ERROR2

WorldEntityKind

WorldEntityKind names what an entity in the slice is.

Value#Description
WORLD_ENTITY_KIND_UNSPECIFIED0
WORLD_ENTITY_KIND_HOST1
WORLD_ENTITY_KIND_DOMAIN2
WORLD_ENTITY_KIND_SUBDOMAIN3
WORLD_ENTITY_KIND_CREDENTIAL4
WORLD_ENTITY_KIND_ACCOUNT5
WORLD_ENTITY_KIND_FINDING6

Package gibson.identity.v1

Package gibson.identity.v1 — caller-side identity inspection.

IdentityService.WhoAmI is the canonical "what can I do?" RPC. Every authenticated principal may call it for themselves; tenant_admins may pass target_principal_id to inspect another agent in their tenant. The response carries the caller's effective FGA grants (component reads/writes/executes, plugin invocations) and any active capability grants.

Spec: component-bootstrap-e2e Requirement 10.

Services

IdentityService

IdentityService exposes the "describe me" RPC.

WhoAmI

WhoAmIRequestWhoAmIResponse

WhoAmI returns the caller's effective FGA grants. When target_principal_id is set, the caller MUST be tenant_admin on the target's tenant — otherwise the daemon returns PermissionDenied. Identity is derived from ext-authz-emitted headers, never from the request body.

Messages

ComponentGrantEffective

ComponentGrantEffective describes the principal's per-action access to one component (FGA type "component"). The three booleans reflect the per-action FGA relations as composed by model.fga's deny-wins rules: each is true iff the principal can perform that action right now after all denies are subtracted.

Field#TypeDescription
component_ref1stringcomponent_ref is the FGA object identifier, e.g. "component:gitlab".
can_read2bool
can_configure3bool
can_execute4bool
sources5repeated GrantSourcesources enumerates how the principal got each granted action. For UI legibility — multiple sources may stack (direct grant plus tenant-member inheritance, etc.).

GrantSource

GrantSource attributes a single grant to its origin in the FGA model. Used by the dashboard's Permissions tab to render inheritance and by gibson inspect to show the operator where a permission came from.

Field#TypeDescription
kind1GrantSource.Kind
source_object2stringsource_object is the FGA object the inheritance flowed from (e.g. "tenant:zeroroot-ai", "team:red"). Empty for KIND_DIRECT.

PluginGrantEffective

PluginGrantEffective describes the principal's invocation access to one plugin (FGA type "plugin", binary can_invoke).

Field#TypeDescription
plugin_ref1string
sources2repeated GrantSource

WhoAmIRequest

WhoAmIRequest carries an optional target_principal_id for admin inspection. When empty, the caller's own identity (from ext-authz headers) is used.

Field#TypeDescription
target_principal_id1stringtarget_principal_id is OPTIONAL. When set, the caller MUST be tenant_admin on the target's tenant. Format matches the FGA user form: "agent_principal:<uuid>" / "tool_principal:<uuid>" / "plugin_principal:<uuid>".

WhoAmIResponse

WhoAmIResponse carries the principal's effective grants.

Field#TypeDescription
principal_id1stringprincipal_id is the FGA principal identifier of the principal this response describes.
kind2PrincipalKind
name3stringname is the human-readable name the principal was registered with (e.g. "scanner-bot"). Used for display; not used for authz.
tenant_id4stringtenant_id is the tenant the principal belongs to.
component_grants5repeated ComponentGrantEffectivecomponent_grants is one entry per component the principal can touch in any way (read, configure, or execute). Components the principal cannot touch are NOT included.
plugin_grants6repeated PluginGrantEffectiveplugin_grants is one entry per plugin the principal can invoke. For agent_principals this is empty by FGA model design (agents do not directly invoke plugins; tools do).
active_capability_grants7repeated gibson.capability.v1.CapabilityGrantInfoactive_capability_grants is the principal's currently-issued CG-JWTs (mission-scoped) at the time of the call. Reuses the public CapabilityGrantInfo message from gibson.capability.v1 (extracted from gibson.admin.v1 in slice #108) rather than minting a parallel type.
truncated8booltruncated is true when the response had to drop entries to fit within the 1000-grant safety bound documented in component-bootstrap-e2e Requirement 10.4. Callers seeing this flag should treat the listing as incomplete and surface a UI warning.
can_revoke_sessions9boolcan_revoke_sessions is a COARSE capability flag: true when the principal holds a tenant/team admin role that lets it revoke the sessions of at least some members (composed from self + tenant#admin-over-member + team#admin-over-member; see RevokeUserSessions / gibson#622). It exists so admin UIs (dashboard#717) can gate "revoke sessions" button visibility without a trial-and-error RPC. It is deliberately NOT per-target: the authoritative, per-(caller,target) decision is still made inside RevokeUserSessions, which fails closed for targets the caller may not revoke. A false value means "show no revoke UI"; a true value means "this principal can revoke someone — let the RPC enforce who."

Enums

GrantSource.Kind

Value#Description
KIND_UNSPECIFIED0
KIND_DIRECT1KIND_DIRECT — tuple writes the principal directly.
KIND_TENANT_MEMBER2KIND_TENANT_MEMBER — inherited via tenant#member.
KIND_TEAM_MEMBER3KIND_TEAM_MEMBER — inherited via team#member.
KIND_OWNER4KIND_OWNER — granted because the principal's tenant owns the component (admin-from-owner FGA path).

PrincipalKind

PrincipalKind identifies the runtime kind of a Gibson principal.

Canonical home: this enum is the SDK-published source of truth. The daemon's local tenant_admin proto and the SDK's RecipientClass enum in gibson.admin.v1.grants are duplicates that pre-date the component-bootstrap-e2e consolidation; both should migrate to importing PrincipalKind from this package over time.

Value#Description
PRINCIPAL_KIND_UNSPECIFIED0
PRINCIPAL_KIND_AGENT1
PRINCIPAL_KIND_TOOL2
PRINCIPAL_KIND_PLUGIN3

Package gibson.manifest.v1

Messages

AgentContract

AgentContract describes an agent's LLM slot surface and declared tool/plugin dependencies. The daemon composes this from the agent's descriptor RPC at registration time.

Field#TypeDescription
llm_slot_names1repeated string
declared_tool_dependencies2repeated string
declared_plugin_dependencies3repeated string

CapabilityManifest

CapabilityManifest is the single, signed, versioned snapshot of every component, permission, cross-component rule, and runtime context that applies to the calling principal in their resolved tenant. Both SDKs (runtime) and the ADK (scaffold-time) consume this shape.

Field#TypeDescription
manifest_id1string
manifest_version2uint64
tenant_id3string
subject4string
issued_at5google.protobuf.Timestamp
expires_at6google.protobuf.Timestamp
ttl_seconds7uint32
tenant_context10TenantContext
agents11repeated ComponentCapability
tools12repeated ComponentCapability
plugins13repeated ComponentCapability
cross_component_rules20repeated CrossComponentRule
cross_component_rules_truncated21bool
limits30LimitsAndQuotas
available_llm_slots31repeated string
memory32MemoryPermissions
signature200bytesSignature payload (Ed25519 over body with signature/kid cleared).
signing_key_id201string

ComponentCapability

ComponentCapability is a single discoverable component (agent, tool, plugin) enriched with the permissions the subject holds against it, plus a typed contract describing how to invoke it.

Kind discriminator (component-bootstrap-e2e R12): the typed principal_kind field is the canonical way to branch on agent/tool/plugin. The legacy string kind = 2 is retained for backward compatibility during the one-minor-release deprecation window — readers SHOULD prefer principal_kind and SHOULD validate that the populated contract oneof matches the kind.

Field#TypeDescription
name1string
kind2stringDEPRECATED: prefer principal_kind. String-form kind for legacy consumers; one-minor-release deprecation window.
component_ref3string
version4string
description5string
is_system6bool
owner_tenant7string
permissions10repeated string
agent_contract20AgentContract
tool_contract21ToolContract
plugin_contract22PluginContract
liveness30ComponentLiveness
principal_kind40gibson.identity.v1.PrincipalKindprincipal_kind is the typed kind discriminator. Populated by the daemon at manifest-resolution time; set by the SDK loader when converting YAML manifests. Must agree with the populated contract oneof (PRINCIPAL_KIND_AGENT ↔ agent_contract, etc.) — mismatches are rejected by the daemon's RegisterPlugin / CreateAgentIdentity validators. Spec: component-bootstrap-e2e Requirement 12.

oneof contract — one of: agent_contract, tool_contract, plugin_contract.

ComponentLiveness

ComponentLiveness is a snapshot of the component's runtime health at manifest issuance time. It is advisory only; the daemon remains the source of truth for live execution decisions.

Field#TypeDescription
status1string
last_heartbeat2google.protobuf.Timestamp
instance_count3uint32

CrossComponentRule

CrossComponentRule expresses an explicit override on the default can_execute evaluation for a (source_component, target_component) pair. Only rules that override the default are emitted, keeping payload bounded.

Field#TypeDescription
source_component_ref1string
target_component_ref2string
effect3CrossComponentRule.Effect
reason4string

GetCapabilityManifestRequest

GetCapabilityManifestRequest identifies the subject whose manifest is requested. agent_principal_id is only honored for tenant admins and enables scaffold-time impersonation previews.

Field#TypeDescription
agent_principal_id1string

GetCapabilityManifestResponse

GetCapabilityManifestResponse wraps the signed manifest. Wrapping keeps the RPC Buf-STANDARD compliant and leaves room for envelope metadata (e.g. server-side issuance metrics) to be added without breaking the wire format of the manifest body itself.

Field#TypeDescription
manifest1CapabilityManifest

LimitsAndQuotas

LimitsAndQuotas carries the tier-derived resource ceilings applied to the subject's session. max_spend_usd is a decimal string to avoid floating-point rounding at quota boundaries.

Field#TypeDescription
max_tokens_per_call1uint64
max_tokens_per_session2uint64
rate_limit_per_minute3uint32
max_spend_usd4string

ManifestInvalidationEvent

ManifestInvalidationEvent is delivered when the subject's manifest should be considered stale. HEARTBEAT events indicate the stream is alive; INVALIDATED events indicate a refresh is warranted.

Field#TypeDescription
event_type1ManifestInvalidationEvent.EventType
tenant_id2string
reason3string
new_manifest_version4uint64
emitted_at5google.protobuf.Timestamp

MemoryPermissions

MemoryPermissions expresses per-tier memory access (e.g. "ro", "rw", "").

Field#TypeDescription
working1string
mission2string
longterm3string

PluginContract

PluginContract enumerates a plugin's callable methods with per-method schemas and per-method FGA-derived invocation permission.

Field#TypeDescription
methods1repeated PluginMethod

PluginMethod

Field#TypeDescription
name1string
params_schema_json2string
result_schema_json3string
can_invoke4bool

TenantContext

TenantContext surfaces the tenant identity and team memberships that gate the manifest's scope.

Field#TypeDescription
tenant_id1string
tenant_display_name2string
team_memberships3repeated string
is_admin4bool

ToolContract

ToolContract describes the proto envelope a tool accepts and emits. input_schema_json and output_schema_json are derived from the FileDescriptor and rendered to JSON Schema for SDK/ADK consumption.

Field#TypeDescription
input_proto_name1string
output_proto_name2string
input_schema_json3string
output_schema_json4string
idempotency5ToolIdempotencysee ToolIdempotency enum; UNSPECIFIED is treated as AT_LEAST_ONCE

WatchManifestInvalidationsRequest

WatchManifestInvalidationsRequest opens a server-streaming channel emitting ManifestInvalidationEvent for the caller's resolved tenant.

No fields.

WatchManifestInvalidationsResponse

WatchManifestInvalidationsResponse wraps a single invalidation event so the RPC's streaming response type satisfies Buf STANDARD naming.

Field#TypeDescription
event1ManifestInvalidationEvent

Enums

CrossComponentRule.Effect

Value#Description
EFFECT_UNSPECIFIED0
EFFECT_ALLOW1
EFFECT_DENY2

ManifestInvalidationEvent.EventType

Value#Description
EVENT_TYPE_UNSPECIFIED0
EVENT_TYPE_HEARTBEAT1
EVENT_TYPE_INVALIDATED2

ToolIdempotency

ToolIdempotency declares the at-most-once / at-least-once / exactly-once delivery semantics a tool guarantees. Read by the resume-from-checkpoint logic: tools at AT_LEAST_ONCE are safely retried on resume; tools at AT_MOST_ONCE are skipped if their pre-checkpoint invocation status is ambiguous; tools at EXACTLY_ONCE require the orchestrator to consult the idempotency journal before re-issuing. UNSPECIFIED is treated as AT_LEAST_ONCE for backward compatibility.

Spec: mission-checkpointing R6.

Value#Description
TOOL_IDEMPOTENCY_UNSPECIFIED0
TOOL_IDEMPOTENCY_AT_MOST_ONCE1
TOOL_IDEMPOTENCY_AT_LEAST_ONCE2
TOOL_IDEMPOTENCY_EXACTLY_ONCE3

Package gibson.mission.v1

Schema evolution policy (mission-schema-canonicalization Requirement 7):

  1. NodeType, Language, BackoffStrategy, and any future enum values are append-only. Existing values are NEVER renumbered or removed.
  2. Deprecated values are marked [deprecated = true] and accompanied by a // reserved comment explaining the supersession.
  3. MissionNode.config oneof variants are append-only with the same discipline; reuse of a tag number is forbidden.
  4. Adding a new node type or expression language requires the controlled-extension contract defined in mission-verb-noun-registry: a matching *NodeConfig message in the oneof, a registered handler in the daemon, and a conformance test exercising the new type end-to-end. CI enforces all four.

The proto under this package is the single source of truth for the mission schema. The daemon, the gibson CLI (ADK), and the dashboard all consume the generated bindings of this file. Hand-written parallel representations are forbidden.

Messages

AgentNodeConfig

AgentNodeConfig contains configuration for agent nodes. AGENT = LLM-driven worker that calls tools and plugins on the author's behalf. The executor selects an agent component by name and dispatches the configured Task.

Field#TypeDescription
agent_name1stringAgentName is the name of the agent to execute
task2gibson.types.v1.TaskTask is the agent task configuration
max_tokens_per_call3optional int32max_tokens_per_call is the per-node override of MissionConstraints.max_tokens_per_call for this agent node only. When present (non-nil), this value is used as the effective cap for all LLM calls made by this node, regardless of the mission-level MissionConstraints.max_tokens_per_call value. Setting this to 0 explicitly disables the cap for this node (the mission-level cap is NOT applied as a fallback when this field is explicitly set to 0). When absent (nil / proto3 optional not set), the mission-level MissionConstraints.max_tokens_per_call applies instead. 0 = inherit from mission-level (when this field is absent). Spec: mission-schema-canonicalization Requirement 5; gibson#133.
llm_slots5repeated LLMSlotConfigllm_slots pins LLM provider/model bindings per named slot for this agent node. Each entry maps a slot name to a specific provider+model. Multiple entries allow different slots to use different providers/models on the same node. Empty list → the node inherits the tenant's default provider for all slots. Absent slot entries fall through to tenant default + constraint search over the tenant's permitted providers. Empty provider or model within an entry is a valid fall-through marker: the daemon resolves it against the tenant's configured defaults. Precedence at resolution per slot: explicit binding in llm_slots > tenant default > constraint search over the tenant's permitted providers. Spec: sdk#260 (multi-slot LLM binding contract); consumer: gibson#524.

ConditionNodeConfig

ConditionNodeConfig contains configuration for condition nodes

Field#TypeDescription
expression1stringExpression to evaluate (e.g., "result.status == 'success'")
true_branch2repeated stringTrueBranch contains node IDs to execute if condition is true
false_branch3repeated stringFalseBranch contains node IDs to execute if condition is false
language4LanguageLanguage declares the expression language. Defaults to LANGUAGE_CEL; LANGUAGE_UNSPECIFIED is treated as CEL for backwards compatibility with pre-Language-field documents.

DataPolicy

DataPolicy defines how data is handled for a node.

Deprecated: superseded by the ECS brain (gibson#851, ADR-0008). Data handling (reuse + scoping) is now implicit in the event-sourced World and scope-relative identity (ADR-0002) + ambient projection. Retained wire-compatibly; ignored by the engine.

Field#TypeDescription
store_input1boolStoreInput determines whether to store input data in GraphRAG
store_output2boolStoreOutput determines whether to store output data in GraphRAG
retention3google.protobuf.DurationRetention specifies how long to retain data (0 = forever)
encryption4boolEncryption determines whether data should be encrypted at rest
access_control5repeated stringAccessControl specifies who can access this data

JoinNodeConfig

JoinNodeConfig blocks until every node ID in wait_for has completed (success or final failure), then merges their results per strategy. JOIN is a first-class noun separable from PARALLEL — a JOIN can merge results from non-parallel branches.

Spec: mission-verb-noun-registry Requirement 7.

Field#TypeDescription
wait_for1repeated stringwait_for lists the upstream node IDs whose completion is required before this JOIN runs. Must be non-empty; submit-time validation rejects empty wait_for.
strategy2MergeStrategystrategy selects how upstream results are combined.
aggregator3stringaggregator carries a CEL expression used when strategy is MERGE_STRATEGY_CUSTOM. The expression sees sources (a map from node ID to that node's result) and returns the merged value. Empty when strategy is not CUSTOM.

LLMSlotConfig

LLMSlotConfig pins the provider/model for an agent node's LLM slot. It is a tenant-scoped reference: the provider name must be one the tenant has configured (gibson.tenant provider config); model is the provider's model id (empty = the provider's default model). Leave the whole message unset to inherit the tenant default.

Field#TypeDescription
slot1stringslot is the slot name this binding targets. Empty defaults to "primary".
provider2stringprovider is the configured provider's name for the calling tenant.
model3stringmodel is the model id; empty uses the provider's default model.

MissionConstraints

MissionConstraints declares the operational limits baked into a mission definition. Making constraints part of the schema lets mission authors publish self-describing missions (e.g., "stop after 50 findings") without requiring callers to supply limits out-of-band at dispatch time.

Semantics (zero means unlimited):

  • max_duration: 0 duration → no time limit
  • max_tokens: 0 → no token budget
  • max_cost: 0.0 → no cost ceiling
  • max_findings: 0 → no finding count limit

Spec: sdk#47 (MissionConstraints proto promotion).

Field#TypeDescription
max_duration1google.protobuf.Durationmax_duration is the wall-clock limit for the entire mission. Uses google.protobuf.Duration for sub-second precision. Absent or zero-value means no time limit.
max_tokens2int64max_tokens is the cumulative LLM token budget across the entire mission (all agent nodes combined). The daemon accumulates usage on every LLM invocation and stops the mission when the budget is exceeded. 0 means unlimited. This is a mission-wide budget, not a per-call limit; use max_tokens_per_call to cap individual invocations.
max_cost3doublemax_cost is the cumulative LLM cost ceiling in USD across all agent nodes. 0.0 means unlimited.
max_findings4int32max_findings is the maximum number of findings to collect before the mission stops. 0 means unlimited.
severity_threshold5stringseverity_threshold is the minimum severity level required to record a finding. Common values: "low", "medium", "high", "critical". Empty string means accept all severities.
require_evidence6boolrequire_evidence indicates whether all findings must include proof-of-concept evidence before being recorded.
blocked_tools7repeated stringblocked_tools lists tool names that must not be invoked during this mission. The daemon enforces this at dispatch time.
blocked_domains8repeated stringblocked_domains lists network domains (e.g., "prod.example.com") that agents must not contact. Enforcement is best-effort at the tool level.
max_turns_per_agent9int32max_turns_per_agent caps the number of agent turns (Observe→Think→Act iterations) for any single agent node in the mission. 0 means unlimited.
allowed_techniques10repeated stringallowed_techniques is the allowlist of attack technique IDs (taxonomy) that agents may use during the mission. Empty list means no allowlist (any technique may be used unless blocked).
blocked_techniques11repeated stringblocked_techniques is the blocklist of attack technique IDs that agents must not use, regardless of allowed_techniques. Empty list means no blocklist.
max_tokens_per_call12int32max_tokens_per_call is the per-invocation cap on LLM tokens for any single LLM call within this mission. Applied by the daemon before every provider call; the provider never sees more than this many output tokens. Precedence cascade (highest → lowest): 1. Per-node *NodeConfig.max_tokens_per_call (when set on a specific node) 2. This field (mission-level default) 3. 0 — no cap from this mechanism When a per-node override is set it completely supersedes this field for that node (including 0, which explicitly disables the cap for that node while this field may still apply to all other nodes). This field is different from max_tokens: max_tokens is a cumulative budget for the entire mission; max_tokens_per_call is a ceiling on each individual LLM call. 0 means unlimited at this level. Spec: mission-schema-canonicalization Requirement 5. Enforced by EffectivePerCallCap (wired in M4, gibson#133).

MissionDefinition

MissionDefinition represents a mission template/definition. This is the shareable mission specification that can be created via the CreateMissionDefinition API and referenced by mission runs.

Field#TypeDescription
id1stringID is the unique identifier for this mission definition
name2stringName is a human-readable name for the mission
description3stringDescription provides additional context about what this mission does
version4stringVersion is the semantic version of the mission definition
target_ref5stringTargetRef is a reference to the target (name or ID) This needs to be resolved to a TargetID when creating a mission instance
nodes6map<string, MissionNode>Nodes contains all the nodes in the mission, indexed by node ID
edges7repeated MissionEdgeEdges contains all the directed edges connecting nodes in the mission
entry_points8repeated stringEntryPoints contains the IDs of nodes that can serve as entry points to the mission These are nodes with no incoming edges
exit_points9repeated stringExitPoints contains the IDs of nodes that can serve as exit points from the mission These are nodes with no outgoing edges
metadata10map<string, string>Metadata contains additional custom metadata for the mission
dependencies11MissionDependenciesDependencies specifies required agents and tools for this mission
source12stringSource is the git URL this mission was installed from (if applicable)
installed_at13google.protobuf.TimestampInstalledAt is the timestamp when this mission was installed
created_at14google.protobuf.TimestampCreatedAt is the timestamp when the mission definition was created
workspace15WorkspaceConfigWorkspace configures repository cloning + workspace management for agents that need code access. Optional; missions without code interaction omit this field. Spec: mission-schema-canonicalization (mirror migration).
constraints16optional MissionConstraintsConstraints declares mission-level operational limits. When present, these are the authoritative constraints for the mission DAG — they make the mission self-describing so authors do not have to supply limits out-of-band at dispatch time. The daemon merges these with any dispatch-time overrides (dispatch wins on conflict). Optional: absent means no constraints are baked into the definition. Spec: sdk#47 (MissionConstraints proto promotion).
decider_slot17optional LLMSlotConfigDeciderSlot names the mission-level LLM the brain's Decider runs on — the orchestration decision-maker, distinct from per-node agent slots (gibson#850). Only the provider+model are used (the slot name is implicitly "decider"). Absent means the brain uses the tenant's dashboard-default provider/model, so missions need not set it.

MissionDependencies

MissionDependencies specifies required components for a mission

Field#TypeDescription
agents1repeated stringAgents lists required agent components by name or URL
tools2repeated stringTools lists required tool components by name or URL
plugins3repeated stringPlugins lists required plugin components by name or URL

MissionEdge

MissionEdge represents a directed edge in the mission DAG

Field#TypeDescription
from1stringFrom is the source node ID
to2stringTo is the destination node ID
condition3stringCondition is an optional condition that must be satisfied for the edge to be traversed
metadata4map<string, string>Metadata contains additional metadata for the edge

MissionNode

MissionNode represents a single node in a mission DAG

Field#TypeDescription
id1stringID is the unique identifier for this node within the mission
type2NodeTypeType is the node type
name3stringName is a human-readable name for the node
description4stringDescription provides additional context about this node
agent_config5AgentNodeConfigAgentConfig for agent nodes
tool_config6ToolNodeConfigToolConfig for tool nodes
plugin_config7PluginNodeConfigPluginConfig for plugin nodes
condition_config8ConditionNodeConfigConditionConfig for condition nodes
parallel_config9ParallelNodeConfigParallelConfig for parallel nodes
dependencies10repeated stringDependencies lists node IDs that must complete before this node executes
timeout11google.protobuf.DurationTimeout is the maximum execution time for this node
retry_policy12RetryPolicyRetryPolicy defines retry behavior for this node
data_policy13DataPolicyDataPolicy defines data handling policy for this node. Deprecated: data reuse + scoping are no longer node-declared. Under the ECS brain (gibson#851, ADR-0008) reuse is implicit in the event-sourced World and scoping flows from scope-relative identity (ADR-0002) + ambient projection. The field is retained wire-compatibly for old definitions but is ignored by the engine.
metadata14map<string, string>Metadata contains additional custom metadata for this node
join_config15JoinNodeConfigJoinConfig for join nodes (mission-verb-noun-registry). Field number 15 because 10-14 are sibling MissionNode fields (dependencies, timeout, retry_policy, data_policy, metadata).
reuse_policy16ReusePolicyReusePolicy declares how this node's I/O is scoped + reused across mission runs. Deprecated: superseded by the ECS brain (gibson#851, ADR-0008). Reuse is implicit in the World; scoping is via scope-relative identity (ADR-0002) + ambient projection. Retained wire-compatibly but ignored by the engine.

oneof config — one of: agent_config, tool_config, plugin_config, condition_config, parallel_config, join_config.

ParallelNodeConfig

ParallelNodeConfig contains configuration for parallel nodes. PARALLEL fans out to its sub-nodes concurrently, capped by max_concurrency. Sibling failures are isolated (one failing sub-node does not cancel its siblings). Spec: mission-verb-noun-registry Requirement 6.

Field#TypeDescription
sub_nodes1repeated MissionNodeSubNodes contains the nodes to execute in parallel
max_concurrency2int32MaxConcurrency limits the number of concurrent executions (0 = unlimited)

PluginNodeConfig

PluginNodeConfig contains configuration for plugin nodes. PLUGIN = multi-method provider keyed by plugin_name + method. Distinct from TOOL: a plugin advertises several callable methods behind one component identity. The executor selects the named method and dispatches params as the call payload.

Field#TypeDescription
plugin_name1stringPluginName is the name of the plugin to query
method2stringMethod is the plugin method to call
params3map<string, string>Params contains the method parameters
max_tokens_per_call4optional int32max_tokens_per_call is the per-node override of MissionConstraints.max_tokens_per_call for this plugin node only. Follows the same semantics as AgentNodeConfig.max_tokens_per_call: present and non-zero caps the call; present and 0 disables the cap for this node; absent means fall through to the mission-level constraint. Spec: mission-schema-canonicalization Requirement 5; gibson#133.

RepositoryConfig

RepositoryConfig defines a single repository to clone. Maps directly to the SDK's workspace.RepositoryConfig type.

Field#TypeDescription
name1stringName is the unique identifier for this repository within the mission. Required.
url2stringURL is the Git repository URL (HTTPS or SSH). Required.
branch3stringBranch is the Git branch to checkout after cloning. Defaults to the repository's default branch when empty.
credential_name4stringCredentialName references a credential in the credential store. Optional — public repos don't need credentials.
shallow5boolShallow enables git clone --depth 1.
depends_on6repeated stringDependsOn lists repository names that must clone first. Enables topological ordering for multi-repo missions.

RetryPolicy

RetryPolicy defines the retry behavior for a mission node

Field#TypeDescription
max_retries1int32MaxRetries is the maximum number of retry attempts
backoff_strategy2BackoffStrategyBackoffStrategy determines how delays are calculated between retries
initial_delay3google.protobuf.DurationInitialDelay is the delay before the first retry attempt
max_delay4google.protobuf.DurationMaxDelay is the maximum delay between retry attempts (used for exponential backoff)
multiplier5doubleMultiplier is the factor by which the delay increases (used for exponential backoff)

ReusePolicy

ReusePolicy declares how a node's I/O is scoped + reused across mission runs.

Deprecated: superseded by the ECS brain (gibson#851, ADR-0008). Reuse is implicit in the event-sourced World and scoping flows from scope-relative identity (ADR-0002) + ambient projection, so node-declared reuse/scoping no longer has meaning. Retained wire-compatibly; ignored by the engine.

Field#TypeDescription
output_scope1stringOutputScope: "mission_run" | "mission" | "global". Default: "mission".
input_scope2stringInputScope: "mission_run" | "mission" | "global". Default: "mission".
reuse3stringReuse: "skip" | "rerun" | "merge". Controls behavior when an existing output is found in scope. Default: "rerun".

ToolNodeConfig

ToolNodeConfig contains configuration for tool nodes. TOOL = single-purpose named function with a typed input map. The executor invokes the named tool through the tool worker queue and returns the tool's output as the node result.

Field#TypeDescription
tool_name1stringToolName is the name of the tool to execute
input2map<string, string>Input contains the tool input parameters
max_tokens_per_call3optional int32max_tokens_per_call is the per-node override of MissionConstraints.max_tokens_per_call for this tool node only. Follows the same semantics as AgentNodeConfig.max_tokens_per_call: present and non-zero caps the call; present and 0 disables the cap for this node; absent means fall through to the mission-level constraint. Spec: mission-schema-canonicalization Requirement 5; gibson#133.

WorkspaceConfig

WorkspaceConfig configures repository cloning + workspace management for missions whose agents need to interact with code. The daemon's workspace manager honors this at mission start (initializeWorkspaces).

Spec: mission-schema-canonicalization (mirror migration — lifts mission.WorkspaceConfig from the daemon's hand-written mirror into the canonical proto schema).

Field#TypeDescription
repositories1repeated RepositoryConfigRepositories to clone for this mission. Each entry becomes a workspace addressable from agents via harness.Workspace(name).
settings2WorkspaceSettingsSettings carries workspace-wide knobs (cleanup, LSP, isolation).

WorkspaceSettings

WorkspaceSettings carries workspace-wide options.

Field#TypeDescription
cleanup_on_complete1boolCleanupOnComplete deletes workspace directories after the mission ends. Defaults to true at the daemon when unset (cleanup is the safe default).
use_worktrees2boolUseWorktrees enables Git worktrees for per-agent isolation — concurrent modifications without conflicts.
lsp_enabled3boolLSPEnabled starts language servers for code validation.
lsp_timeout4google.protobuf.DurationLSPTimeout caps LSP validation duration. Encoded as a protobuf Duration to preserve sub-second precision.
base_directory5stringBaseDirectory is the workspace clone root. When empty the daemon uses a temp directory.

Enums

BackoffStrategy

BackoffStrategy defines the strategy for calculating retry delays

Value#Description
BACKOFF_STRATEGY_UNSPECIFIED0Sentinel value - must be first
BACKOFF_STRATEGY_CONSTANT1Constant returns a constant delay for all retry attempts
BACKOFF_STRATEGY_LINEAR2Linear increases the delay linearly with each retry attempt
BACKOFF_STRATEGY_EXPONENTIAL3Exponential increases the delay exponentially with each retry attempt

Language

Language declares the expression language used by mission constructs that evaluate string expressions (currently only ConditionNodeConfig).

Spec: mission-schema-canonicalization Requirement 4. CEL is the only language supported in v1; LANGUAGE_UNSPECIFIED is treated as LANGUAGE_CEL for backwards compatibility with documents authored before this enum existed.

Value#Description
LANGUAGE_UNSPECIFIED0Sentinel value - treated as LANGUAGE_CEL by the daemon.
LANGUAGE_CEL1Common Expression Language (cel-spec.dev). The default.

MergeStrategy

MergeStrategy declares how a JoinNodeConfig combines results from its wait_for upstream sources.

Spec: mission-verb-noun-registry Requirement 7.

Value#Description
MERGE_STRATEGY_UNSPECIFIED0Sentinel - must be first.
MERGE_STRATEGY_CONCAT1CONCAT preserves source order in the merged output.
MERGE_STRATEGY_REDUCE2REDUCE applies a built-in reducer (semantics defined in the CONDITION/JOIN executor design).
MERGE_STRATEGY_FIRST3FIRST returns the first source to complete.
MERGE_STRATEGY_LAST4LAST returns the last source to complete.
MERGE_STRATEGY_CUSTOM5CUSTOM evaluates the JoinNodeConfig.aggregator CEL expression against the source results.

NodeType

NodeType defines the type of mission node

Value#Description
NODE_TYPE_UNSPECIFIED0Sentinel value - must be first
NODE_TYPE_AGENT1Agent node executes an agent
NODE_TYPE_TOOL2Tool node executes a tool
NODE_TYPE_PLUGIN3Plugin node calls a named method on a multi-method plugin component.
NODE_TYPE_CONDITION4Condition node performs conditional branching
NODE_TYPE_PARALLEL5Parallel node executes sub-nodes in parallel
NODE_TYPE_JOIN6Join node waits for multiple branches to complete

Package gibson.plugin.v1

Services

PluginInvokeService

PluginInvokeService is the tool-callable RPC for invoking plugin methods. Tools call PluginInvoke; the daemon validates authz, looks up an active plugin install, enqueues a work item via the existing ComponentService PollWork model, awaits SubmitResult, and forwards the result to the tool. Plugin business methods themselves are NOT defined here — the plugin's manifest declares its own method set per the plugin-runtime manifest spec, and the dispatch is by method-name string carried in PluginInvokeRequest.

PluginInvoke

PluginInvokeRequestPluginInvokeResponse

PluginInvoke routes a typed invocation to a serving plugin install.

Messages

PluginError

Field#TypeDescription
kind1PluginError.Kind
message2stringmessage is human-readable. NEVER includes resolved secret values.

PluginInvokeRequest

Field#TypeDescription
plugin_name1stringplugin_name is the manifest.metadata.name of the target plugin.
method2stringmethod is the name of the plugin method to invoke. Must match one of the plugin's declared methods in its manifest.
request3google.protobuf.Anyrequest carries the typed request payload as a google.protobuf.Any. The plugin SDK unmarshals using the proto descriptor set the plugin uploaded at registration time.
deadline_ms4int64deadline_ms is the maximum time in milliseconds the daemon should wait for the plugin to claim and submit. Capped at 60000 (60s) by the daemon.

PluginInvokeResponse

Field#TypeDescription
result1google.protobuf.Anyresult carries the typed response payload, populated on success. Empty on error.
error2PluginErrorerror is populated when the plugin returned an error or the dispatch failed.

Enums

PluginError.Kind

Value#Description
PLUGIN_ERROR_KIND_UNSPECIFIED0
PLUGIN_ERROR_KIND_UNAVAILABLE1PLUGIN_ERROR_KIND_UNAVAILABLE: no serving install or all installs unreachable.
PLUGIN_ERROR_KIND_UNAUTHORIZED2PLUGIN_ERROR_KIND_UNAUTHORIZED: FGA deny — defense in depth (ext-authz already denied at edge).
PLUGIN_ERROR_KIND_METHOD_NOT_FOUND3PLUGIN_ERROR_KIND_METHOD_NOT_FOUND: method not in the plugin's declared methods.
PLUGIN_ERROR_KIND_DEADLINE_EXCEEDED4PLUGIN_ERROR_KIND_DEADLINE_EXCEEDED: plugin did not return within deadline_ms.
PLUGIN_ERROR_KIND_HANDLER_FAILED5PLUGIN_ERROR_KIND_HANDLER_FAILED: plugin handler returned a non-nil error.
PLUGIN_ERROR_KIND_INTERNAL6PLUGIN_ERROR_KIND_INTERNAL: server-side error.

Package gibson.pluginadmin.v1

Package gibson.pluginadmin.v1 — PluginAdminService: customer-callable plugin registration / install-management surface and the developer plugin-publish dev-loop. Re-homed out of gibson.tenant.v1 into its own wire package so it can stay in the OSS SDK while the nine tenant-administration services move to the gibson platform protos under the unchanged gibson.tenant.v1 package — keeping both in one package would link two generated Go homes for gibson.tenant.v1 into the daemon (proto: duplicate registration). See ADR-0058 (amended 2026-06-22).

Authorization: every RPC carries a (gibson.auth.v1.authz) annotation.

Services

PluginAdminService

PluginAdminService manages plugin installs and their secret bindings.

EditPluginSecretBinding

EditPluginSecretBindingRequestEditPluginSecretBindingResponse

EditPluginSecretBinding modifies an existing binding (rebind to a different existing secret). Used by the plugin detail page's bindings table.

GetPluginInstall

GetPluginInstallRequestGetPluginInstallResponse

GetPluginInstall returns one install by ID.

ListPluginInstalls

ListPluginInstallsRequestListPluginInstallsResponse

ListPluginInstalls returns all plugin installs for the tenant.

RegisterPlugin

RegisterPluginRequestRegisterPluginResponse

RegisterPlugin atomically registers a plugin per Spec 2 R3.1: validates manifest, creates the Zitadel plugin_principal SA, writes per-binding FGA can_resolve tuples (creating any inline secrets in the broker), returns the bootstrap token. Any partial failure rolls back all created state.

RevokePluginSecretBinding

RevokePluginSecretBindingRequestRevokePluginSecretBindingResponse

RevokePluginSecretBinding removes an FGA can_resolve tuple between the plugin and a secret. Emits a secret_access_revoked audit event.

Messages

EditPluginSecretBindingRequest

Field#TypeDescription
install_id1string
declared_name2string
new_existing_ref3string

EditPluginSecretBindingResponse

No fields.

GetPluginInstallRequest

Field#TypeDescription
install_id1string

GetPluginInstallResponse

Field#TypeDescription
install1PluginInstallSummary

ListPluginInstallsRequest

Field#TypeDescription
name_filter1string
status_filter2PluginInstallStatus
limit3int32
offset4int32

ListPluginInstallsResponse

Field#TypeDescription
installs1repeated PluginInstallSummary
total2int32

PluginInstallSummary

PluginInstallSummary is the wire-shape returned by ListPluginInstalls and GetPluginInstall.

Field#TypeDescription
install_id1string
name2string
version3string
declared_methods4repeated string
runtime_mode5string
setec_required6bool
host_id7string
status8PluginInstallStatus
address9string
last_heartbeat_at_unix10int64
created_at_unix11int64
bound_secret_refs12repeated string

PluginManifestValidationError

PluginManifestValidationError carries one structured manifest error.

Field#TypeDescription
field1stringfield is the dotted JSONPath into the manifest.
line2int32
code3string
message4string

PluginSecretBinding

PluginSecretBinding describes one secret binding in a RegisterPlugin request.

Field#TypeDescription
declared_name1stringdeclared_name is the name as declared in the plugin manifest's spec.secrets[] entry.
mode2stringmode is one of: "existing" (bind to existing secret) or "create" (create new secret inline).
existing_ref3stringexisting_ref is the broker-namespaced name of an already-stored secret to bind to. Set when mode = "existing".
create_value4bytescreate_value is the plaintext bytes to store under declared_name when mode = "create". TLS in transit; never logged.

RegisterPluginRequest

Field#TypeDescription
manifest_yaml1bytesmanifest_yaml is the plugin manifest YAML bytes.
bindings2repeated PluginSecretBinding
dry_run3booldry_run, when true, validates manifest + bindings without creating any state.
remote4boolremote, when true, registers an MCP connector for execution in the customer's own network instead of a gibson-hosted setec sandbox (ADR-0048 remote-deployment path). The daemon skips the hosted launch and the response carries the one-time bootstrap_token; the customer runs the MCP-bridge themselves and the bridge redeems the token to enroll. Only valid for connector manifests (connector.gibson.zeroroot.ai/v1): plain plugins are always customer-run and already receive the token.

RegisterPluginResponse

Field#TypeDescription
install_id1string
plugin_principal_id2string
bootstrap_token3stringbootstrap_token is the single-use enrollment token. Empty when dry_run.
bootstrap_token_expires_at_unix4int64
validation_errors5repeated PluginManifestValidationError

RevokePluginSecretBindingRequest

Field#TypeDescription
install_id1string
declared_name2string

RevokePluginSecretBindingResponse

No fields.

Enums

PluginInstallStatus

PluginInstallStatus mirrors the daemon's transient runtime status for a plugin install. The dashboard renders this as a badge on the plugin detail page.

Value#Description
PLUGIN_INSTALL_STATUS_UNSPECIFIED0
PLUGIN_INSTALL_STATUS_SERVING1PLUGIN_INSTALL_STATUS_SERVING: install heartbeated within TTL and is accepting work.
PLUGIN_INSTALL_STATUS_UNREACHABLE2PLUGIN_INSTALL_STATUS_UNREACHABLE: install has not heartbeated within 90 seconds; not eligible for dispatch.
PLUGIN_INSTALL_STATUS_DEGRADED3PLUGIN_INSTALL_STATUS_DEGRADED: install heartbeats but reports errors on its method invocations.

Package gibson.target.v1

gibson.target.v1 is the customer-facing target contract. A Target is a system to be assessed by a mission. The id (UUID) is the canonical identity; every other field is metadata. Nothing resolves targets by name — clients reference a target solely by its server-minted UUID.

This package mirrors the daemon's types.Target / types.TargetFilter storage shape. The daemon, the gibson CLI (ADK), and the dashboard all consume the generated bindings of this file; hand-written parallel representations are forbidden.

Schema evolution policy: message field numbers are append-only — no renumbers, no reuse. Type-of-field changes are breaking and require a ship sequence across the SDK and every consumer.

Messages

Target

Target represents a system to be assessed by a mission.

id is the canonical UUID identity, assigned by the daemon on CreateTarget; clients never invent it. name and all remaining fields are metadata. Two targets may share a name — only the UUID is unique.

Field#TypeDescription
id1stringid is the server-minted UUID. Empty on a CreateTarget request (ignored if set); always populated on responses.
name2stringname is a human-readable label (metadata only, not an identifier).
type3stringtype is the schema-based target type.
provider4stringprovider identifies the backing provider for model/provider targets.
connection5google.protobuf.Structconnection holds schema-based connection parameters (e.g. url, headers).
model6stringmodel is the model identifier for model targets.
config7google.protobuf.Structconfig holds free-form target configuration.
capabilities8repeated stringcapabilities lists capability tags advertised by the target.
auth_type9stringauth_type is the authentication scheme for the target.
credential_id10stringcredential_id references a stored credential. Empty when none.
status11stringstatus is the target lifecycle status.
description12stringdescription is free-text describing the target.
tags13repeated stringtags are user-assigned labels for filtering/organization.
timeout14int32timeout is the per-operation timeout in seconds.
created_at15google.protobuf.Timestampcreated_at is when the target was registered.
updated_at16google.protobuf.Timestampupdated_at is when the target was last modified.
url17stringurl is the target endpoint. Deprecated: prefer connection["url"].
headers18map<string, string>headers are default HTTP headers. Deprecated: prefer connection["headers"].

TargetFilter

TargetFilter narrows ListTargets results. Mirrors types.TargetFilter. All fields are optional; an empty filter returns the tenant's targets.

Field#TypeDescription
provider1stringprovider filters by backing provider.
type2stringtype filters by schema-based target type.
status3stringstatus filters by lifecycle status.
tags4repeated stringtags filters to targets carrying all of the given tags.
limit5int32limit caps the number of results. Zero means the server default.
offset6int32offset skips the first N results for pagination.

Package gibson.tool.v1

Package gibson.tool.v1 also exposes the MessageOptions extension is_tool_response so proto authors can mark a message as a tool response container. Today this annotation is consumed by the SDK's field-100 contract test (see graphrag/field_100_contract_test.go) to scope its assertion to messages that actually need to honour the gibson.graphrag.v1.DiscoveryResult slot at field 100.

Spec: tdd-coverage-gibson-sdk (Epic #6) — replaces the previous "scan every gibson.* message" filter.

Services

ToolService

Execute

ExecuteRequestExecuteResponse

GetDescriptor

GetDescriptorRequestGetDescriptorResponse

Health

HealthRequestHealthResponse

StreamExecute

stream StreamExecuteRequeststream StreamExecuteResponse

Messages

ExecuteRequest

Field#TypeDescription
input_json1string
timeout_ms2int64

ExecuteResponse

Field#TypeDescription
output_json1string
error2gibson.common.v1.Error

GetDescriptorRequest

No fields.

GetDescriptorResponse

Field#TypeDescription
name1string
description2string
version3string
tags4repeated string
input_schema5gibson.common.v1.JSONSchema
output_schema6gibson.common.v1.JSONSchema

HealthRequest

No fields.

HealthResponse

Field#TypeDescription
status1gibson.common.v1.HealthStatus

StreamExecuteRequest

Client -> Tool messages for streaming

Field#TypeDescription
start1ToolStartRequest
cancel2ToolCancelRequest

oneof payload — one of: start, cancel.

StreamExecuteResponse

Tool -> Client messages for streaming

Field#TypeDescription
progress1ToolProgress
partial2ToolPartialResult
warning3ToolWarning
complete4ToolComplete
error5ToolError
trace_id10string
span_id11string
sequence12int64
timestamp_ms13int64

oneof payload — one of: progress, partial, warning, complete, error.

ToolCancelRequest

Field#TypeDescription
reason1string

ToolComplete

Field#TypeDescription
output_json1stringFinal JSON-encoded output matching the tool's output schema

ToolError

Field#TypeDescription
error1gibson.common.v1.Error
fatal2boolWhether this error is recoverable

ToolPartialResult

Field#TypeDescription
output_json1stringJSON-encoded partial output matching the tool's output schema
description2stringOptional description of this partial result

ToolProgress

Field#TypeDescription
percent1int32Progress percentage (0-100)
stage2stringCurrent stage description
message3stringHuman-readable status message

ToolStartRequest

Field#TypeDescription
input_json1string
timeout_ms2int64
trace_id3stringTrace ID for distributed tracing (propagated from agent/orchestrator).
parent_span_id4stringParent span ID for distributed tracing (propagated from agent/orchestrator).

ToolWarning

Field#TypeDescription
message1stringWarning message
code2stringOptional warning code

Package gibson.types.v1

Messages

ComplianceMapping

ComplianceMapping links a Finding to a compliance framework control. See core/sdk/finding/compliance_mapping.go for the author-side Go type.

Field#TypeDescription
framework1stringCompliance framework identifier (e.g. SOC2, NIST_AI_RMF, MITRE_ATLAS, MITRE_ATTACK, PLATFORM).
control_id2stringControl identifier within the framework.
rationale3stringOptional human-readable rationale.
evidence_ref4stringOptional pointer to supporting evidence.

Evidence

Evidence represents supporting evidence for a finding.

Field#TypeDescription
title1string
type2EvidenceType
content3string
metadata4map<string, string>

Finding

Finding represents a security vulnerability or issue discovered during testing.

Field#TypeDescription
id1string
mission_id2string
agent_name3string
delegated_from4string
title5string
description6string
category7string
subcategory8string
severity9FindingSeverity
confidence10double
status11FindingStatus
mitre_attack12MitreMapping
mitre_atlas13MitreMapping
evidence14repeated Evidence
reproduction15repeated ReproStep
cvss_score16double
risk_score17double
remediation18string
references19repeated string
target_id20string
technique21string
tags22repeated string
created_at23int64
updated_at24int64
compliance_mappings25repeated ComplianceMappingCompliance framework mappings — added by audit-finding-compliance-mappings. Links the finding to specific control IDs in compliance frameworks (SOC2, NIST AI RMF, MITRE ATLAS, MITRE ATT&CK). Multiple entries per framework allowed; downstream exporters (SARIF) surface them.

GraphQuery

GraphQuery represents a query against the knowledge graph.

Field#TypeDescription
text1string
embedding2repeated float
top_k3int32
node_types4repeated string
min_score5double
max_score6double
mission_id7string
mission_run_id8string
scope9QueryScope
filters10map<string, string>
vector_weight11doubleWeights for hybrid scoring (must sum to 1.0)
graph_weight12double

MissionRunSummary

MissionRunSummary describes one run of a mission.

Returned by the GetMissionRunHistory knowledge read. An agent lists the runs, then pulls findings for a previous one with GetRunFindings — the two are consumed together, which is why run history sits with the knowledge reads and not with mission lifecycle control.

Field#TypeDescription
mission_id1string
run_number2int32run_number is sequential from 1.
status3stringstatus is the final status of this run.
findings_count4int32
created_at5int64
completed_at6int64completed_at is 0 while the run is still in flight.

MitreMapping

MitreMapping represents a mapping to MITRE ATT&CK or ATLAS framework.

Field#TypeDescription
matrix1string
tactic_id2string
tactic_name3string
technique_id4string
technique_name5string
sub_techniques6repeated string

ReproStep

ReproStep represents a step in reproducing a finding.

Field#TypeDescription
order1int32
description2string
input3string
output4string

Result

Result represents the outcome of a task execution.

Field#TypeDescription
status1ResultStatus
output2gibson.common.v1.TypedValue
finding_ids3repeated string
metadata4map<string, gibson.common.v1.TypedValue>
error5ResultError

ResultError

ResultError represents a structured error with retry information.

Field#TypeDescription
code1gibson.common.v1.ErrorCode
message2string
details3map<string, string>
retryable4bool

Task

Task represents a goal-oriented task with context and constraints.

Field#TypeDescription
id1string
goal2string
context3map<string, gibson.common.v1.TypedValue>
constraints4TaskConstraints
metadata5map<string, gibson.common.v1.TypedValue>

TaskConstraints

TaskConstraints represents execution constraints for a task.

Field#TypeDescription
max_turns1int32
max_tokens2int32
allowed_tools3repeated string
blocked_tools4repeated string

Enums

EvidenceType

EvidenceType represents the type of evidence collected.

Value#Description
EVIDENCE_TYPE_UNSPECIFIED0
EVIDENCE_TYPE_REQUEST1
EVIDENCE_TYPE_RESPONSE2
EVIDENCE_TYPE_SCREENSHOT3
EVIDENCE_TYPE_CODE4
EVIDENCE_TYPE_LOG5
EVIDENCE_TYPE_OTHER6

FindingSeverity

FindingSeverity represents the severity level of a security finding.

Value#Description
FINDING_SEVERITY_UNSPECIFIED0
FINDING_SEVERITY_CRITICAL1
FINDING_SEVERITY_HIGH2
FINDING_SEVERITY_MEDIUM3
FINDING_SEVERITY_LOW4
FINDING_SEVERITY_INFO5

FindingStatus

FindingStatus represents the current status of a security finding.

Value#Description
FINDING_STATUS_UNSPECIFIED0
FINDING_STATUS_OPEN1
FINDING_STATUS_CONFIRMED2
FINDING_STATUS_CLOSED3
FINDING_STATUS_FALSE_POSITIVE4

QueryScope

QueryScope represents the scope of a GraphRAG query.

Value#Description
QUERY_SCOPE_UNSPECIFIED0
QUERY_SCOPE_MISSION_RUN1
QUERY_SCOPE_MISSION2
QUERY_SCOPE_GLOBAL3

ResultStatus

ResultStatus represents the execution status of a task or operation.

Value#Description
RESULT_STATUS_UNSPECIFIED0
RESULT_STATUS_SUCCESS1
RESULT_STATUS_FAILED2
RESULT_STATUS_PARTIAL3
RESULT_STATUS_CANCELLED4
RESULT_STATUS_TIMEOUT5

Package taxonomy.v1

Messages

Account

Account represents: A principal/account on a target system or identity provider.

Field#TypeDescription
id1string
provider2stringProperties
subject3string
username4optional string
status5optional string
roles6repeated string

AgentRun

AgentRun represents: Single execution of an agent within a mission

Field#TypeDescription
id1string
agent_name2stringProperties
mission_run_id3optional string
status4optional string
started_at5optional int64
completed_at6optional int64
error_message7optional string
actor_id8string
actor_tenant_id9string
api_key_id10optional string
component_name11string
component_version12string
system_owned13bool
parent_agent_run_id14optional string
delegation_depth15optional int32

Certificate

Certificate represents: TLS/SSL certificate

Field#TypeDescription
id1string
subject2optional stringProperties
issuer3optional string
serial_number4optional string
not_before5optional int64
not_after6optional int64
fingerprint_sha2567optional string
san8optional string

ComplianceMapping

==================== NESTED VALUE-OBJECT MESSAGES ==================== These are embedded value objects, not graph nodes. They have no id field, no parent reference, and no graph-node semantics. ComplianceMapping is a nested value-object type.

Field#TypeDescription
framework1string
control_id2string
rationale3optional string
evidence_ref4optional string

ComplianceSignal

ComplianceSignal represents: Daemon-emitted observation of a single harness call. Append-only. Immutable. The graph projection of the Redis Streams audit log entry for one platform action. Every compliance_signal is an objective observation; evidence, violation, and attestation classifications are queries over the stream, never stored types. No kind discriminator field exists on this node type.

Field#TypeDescription
id1string
signal_id2stringProperties
actor_id3string
actor_tenant_id4string
api_key_id5optional string
on_behalf_of6optional string
roles_snapshot7repeated string
mission_id8optional string
mission_run_id9optional string
agent_run_id10optional string
parent_agent_run_id11optional string
delegation_depth12optional int32
trace_id13optional string
caller_chain14repeated string
caller_component15string
caller_component_version16string
target_component17string
target_component_version18string
system_owned19bool
action20string
effect21string
resource_type22string
resource_node_id23optional string
resource_uri24optional string
decision25string
policy_id26optional string
decision_reason27optional string
success28bool
error_code29optional string
latency_ms30int64
bytes_in31optional int64
bytes_out32optional int64
tokens_prompt33optional int32
tokens_completion34optional int32
occurred_at35int64
resource_tags36optional string
custom37optional string
control_ids38repeated string

Credential

Credential represents: A credential (secret material), identified by the hash of its secret. May work across scopes.

Field#TypeDescription
id1string
hash2stringProperties
kind3optional string
username4optional string
source5optional string
validated6optional bool

Domain

Domain represents: Root domain entity (e.g., example.com)

Field#TypeDescription
id1string
name2stringProperties
registrar3optional string
created_date4optional int64
expiry_date5optional int64
nameservers6optional string

Endpoint

Endpoint represents: Web endpoint or URL

Field#TypeDescription
id1string
url2stringProperties
method3optional string
status_code4optional int32
content_type5optional string
content_length6optional int64
title7optional string
parent_service_id8stringParent reference

Evidence

Evidence represents: Supporting evidence for a finding

Field#TypeDescription
id1string
type2stringProperties
content3optional string
content_type4optional string
url5optional string
parent_finding_id6stringParent reference

Finding

Finding represents: Security vulnerability or issue

Field#TypeDescription
id1string
title2stringProperties
description3optional string
severity4string
confidence5optional double
category6optional string
subcategory7optional string
remediation8optional string
cvss_score9optional double
cve_ids10optional string
cwe_ids11optional string
compliance_mappings12repeated ComplianceMapping

GraphNode

GraphNode is the generic node type that can represent any taxonomy node. Use typed messages (Host, Port, etc.) for compile-time safety, or GraphNode for dynamic/custom types.

Field#TypeDescription
id1stringIdentity
type2string
properties3map<string, Value>Properties (flexible key-value)
parent_id4optional stringParent reference (set by BelongsTo)
parent_type5optional string
parent_relationship6optional string
mission_id10stringScoping (injected by harness - agents never set these)
mission_run_id11string
agent_run_id12string
discovered_by13string
discovered_at14int64
created_at20int64Timestamps
updated_at21int64

Host

Host represents: IP address or hostname

Field#TypeDescription
id1string
ip2optional stringProperties
hostname3optional string
os4optional string
os_version5optional string
mac_address6optional string
state7optional string

ListValue

Field#TypeDescription
values1repeated Value

LlmCall

LlmCall represents: Call to a large language model

Field#TypeDescription
id1string
model2stringProperties
provider3optional string
slot_name4optional string
agent_run_id5optional string
prompt_tokens6optional int32
completion_tokens7optional int32
total_tokens8optional int32
latency_ms9optional int64
started_at10optional int64
actor_id11string
actor_tenant_id12string
api_key_id13optional string
component_name14string
component_version15string
model_id16string

MapValue

Field#TypeDescription
fields1map<string, Value>

Mission

Mission represents: Top-level security assessment mission

Field#TypeDescription
id1string
name2stringProperties
target3string
status4optional string
description5optional string
started_at6optional int64
completed_at7optional int64

MissionRun

MissionRun represents: Single execution of a mission pipeline

Field#TypeDescription
id1string
run_number2int32Properties
status3optional string
started_at4optional int64
completed_at5optional int64
actor_id6string
actor_tenant_id7string
api_key_id8optional string
mission_yaml_digest9string
parent_mission_id10stringParent reference

Port

Port represents: Network port on a host

Field#TypeDescription
id1string
number2int32Properties
protocol3string
state4optional string
reason5optional string
parent_host_id6stringParent reference

Relationship

Relationship represents a connection between two nodes.

Field#TypeDescription
id1string
from_id2string
to_id3string
type4string
properties5map<string, Value>
weight6double
mission_id10stringScoping
mission_run_id11string
created_at20int64Timestamps

Scope

Scope represents: Network/addressing context (vantage) an observation was made within; declared in the mission (RoE) or minted on pivot. The coordinate of an asset is (scope, address).

Field#TypeDescription
id1string
scope_id2stringProperties
name3optional string
kind4optional string
cidrs5repeated string
gateway_fingerprint6optional string
reachable7optional bool

Service

Service represents: Service running on a port

Field#TypeDescription
id1string
name2stringProperties
product3optional string
version4optional string
extra_info5optional string
banner6optional string
cpe7optional string
parent_port_id8stringParent reference

Subdomain

Subdomain represents: Subdomain under a root domain

Field#TypeDescription
id1string
name2stringProperties
full_name3optional string
parent_domain_id4stringParent reference

Technique

Technique represents: Attack technique (MITRE/Gibson)

Field#TypeDescription
id1string
technique_id2stringProperties
name3string
taxonomy4optional string
tactic5optional string
description6optional string
url7optional string

Technology

Technology represents: Technology/framework detected

Field#TypeDescription
id1string
name2stringProperties
version3optional string
category4optional string
confidence5optional int32
cpe6optional string

ToolExecution

ToolExecution represents: Execution of a security tool

Field#TypeDescription
id1string
tool_name2stringProperties
command3optional string
exit_code4optional int32
started_at5optional int64
completed_at6optional int64
stdout7optional string
stderr8optional string
actor_id9string
actor_tenant_id10string
api_key_id11optional string
component_name12string
component_version13string
system_owned14bool
parent_agent_run_id15stringParent reference

Value

Value represents a dynamic property value.

Field#TypeDescription
string_value1string
int_value2int64
double_value3double
bool_value4bool
bytes_value5bytes
timestamp_value6int64
list_value7ListValue
map_value8MapValue

oneof kind — one of: string_value, int_value, double_value, bool_value, bytes_value, timestamp_value, list_value, map_value.

Enums

CoreNodeType

CoreNodeType enumerates all core (validated) node types. Custom types use string directly, not this enum.

Value#Description
CORE_NODE_TYPE_UNSPECIFIED0
CORE_NODE_TYPE_MISSION1
CORE_NODE_TYPE_MISSION_RUN2
CORE_NODE_TYPE_AGENT_RUN3
CORE_NODE_TYPE_TOOL_EXECUTION4
CORE_NODE_TYPE_LLM_CALL5
CORE_NODE_TYPE_DOMAIN6
CORE_NODE_TYPE_SUBDOMAIN7
CORE_NODE_TYPE_HOST8
CORE_NODE_TYPE_PORT9
CORE_NODE_TYPE_SERVICE10
CORE_NODE_TYPE_ENDPOINT11
CORE_NODE_TYPE_TECHNOLOGY12
CORE_NODE_TYPE_CERTIFICATE13
CORE_NODE_TYPE_FINDING14
CORE_NODE_TYPE_EVIDENCE15
CORE_NODE_TYPE_TECHNIQUE16
CORE_NODE_TYPE_COMPLIANCE_SIGNAL17
CORE_NODE_TYPE_SCOPE18
CORE_NODE_TYPE_CREDENTIAL19
CORE_NODE_TYPE_ACCOUNT20

CoreRelationType

CoreRelationType enumerates all core relationship types.

Value#Description
CORE_RELATION_TYPE_UNSPECIFIED0
CORE_RELATION_TYPE_USED_TOOL1
CORE_RELATION_TYPE_DELEGATED_TO2
CORE_RELATION_TYPE_EMITTED_SIGNAL3
CORE_RELATION_TYPE_T_R_I_G_G_E_R_E_D4
CORE_RELATION_TYPE_HAS_SUBDOMAIN5
CORE_RELATION_TYPE_RESOLVES_TO6
CORE_RELATION_TYPE_HAS_PORT7
CORE_RELATION_TYPE_RUNS_SERVICE8
CORE_RELATION_TYPE_HAS_ENDPOINT9
CORE_RELATION_TYPE_USES_TECHNOLOGY10
CORE_RELATION_TYPE_SERVES_CERTIFICATE11
CORE_RELATION_TYPE_A_F_F_E_C_T_S12
CORE_RELATION_TYPE_HAS_EVIDENCE13
CORE_RELATION_TYPE_USES_TECHNIQUE14
CORE_RELATION_TYPE_LEADS_TO15

On this page

Package gibson.agent.v1ServicesAgentServiceExecuteGetDescriptorGetSlotSchemaHealthMessagesAgentSlotConfigAgentSlotConstraintsAgentSlotDefinitionExecuteRequestExecuteResponseGetDescriptorRequestGetDescriptorResponseGetSlotSchemaRequestGetSlotSchemaResponseHealthRequestHealthResponseTargetSchemaProtoPackage gibson.agentidentity.v1ServicesAgentIdentityServiceCreateAgentIdentityListAgentIdentitiesRevokeAgentIdentityMessagesAgentIdentityComponentGrantCreateAgentIdentityRequestCreateAgentIdentityResponseListAgentIdentitiesRequestListAgentIdentitiesResponseRevokeAgentIdentityRequestRevokeAgentIdentityResponseEnumsPrincipalKindPackage gibson.budget_status.v1MessagesBudgetExceededEnumsBudgetScopePackage gibson.capability.v1MessagesCapabilityGrantInfoEnumsIsolationModeRecipientClassPackage gibson.common.v1MessagesErrorHealthStatusJSONSchemaMetadataTypedArrayTypedMapTypedValueEnumsErrorCodeHealthStateNullValuePackage gibson.component.v1ServicesComponentServiceCallToolCallToolStreamCancelMissionCompleteCompleteStreamCompleteStructuredCompleteWithToolsCreateMissionDelegateToAgentDisablePluginEnablePluginFindSimilarAttacksFindSimilarFindingsGetAttackChainsGetCredentialGetFindingsGetMissionResultsGetMissionRunHistoryGetMissionStatusGetPluginConfigGetRelatedFindingsGetRunFindingsGetTaxonomySchemaHeartbeatListAgentsListAvailablePluginsListMissionsListTenantPluginsListToolsPollWorkQueryNodesQueryPluginQueueToolWorkRegisterComponentReportStepHintsRunMissionSubmitFindingSubmitResultTestPluginConnectionToolResultsUpdatePluginConfigWaitMissionMessagesAgentDescriptorProtoCallToolRequestCallToolResponseCallToolStreamRequestCallToolStreamResponseCancelMissionRequestCancelMissionResponseCompleteRequestCompleteResponseCompleteStreamRequestCompleteStreamResponseCompleteStructuredRequestCompleteStructuredResponseCompleteWithToolsRequestCompleteWithToolsResponseComponentDescriptorComponentErrorComponentMethodCreateMissionRequestCreateMissionResponseDelegateToAgentRequestDelegateToAgentResponseDisablePluginRequestDisablePluginResponseEnablePluginRequestEnablePluginResponseFindSimilarAttacksRequestFindSimilarAttacksResponseFindSimilarFindingsRequestFindSimilarFindingsResponseGetAttackChainsRequestGetAttackChainsResponseGetCredentialRequestGetCredentialResponseGetFindingsRequestGetFindingsResponseGetMissionResultsRequestGetMissionResultsResponseGetMissionRunHistoryRequestGetMissionRunHistoryResponseGetMissionStatusRequestGetMissionStatusResponseGetPluginConfigRequestGetPluginConfigResponseGetRelatedFindingsRequestGetRelatedFindingsResponseGetRunFindingsRequestGetRunFindingsResponseGetTaxonomySchemaRequestGetTaxonomySchemaResponseHeartbeatRequestHeartbeatResponseLLMMessageListAgentsRequestListAgentsResponseListAvailablePluginsRequestListAvailablePluginsResponseListMissionsRequestListMissionsResponseListTenantPluginsRequestListTenantPluginsResponseListToolsRequestListToolsResponsePluginAccessProtoPluginCatalogEntryProtoPollWorkRequestPollWorkResponseQueryNodesRequestQueryNodesResponseQueryPluginRequestQueryPluginResponseQueueToolWorkRequestQueueToolWorkResponseRegisterComponentRequestRegisterComponentResponseReportStepHintsRequestReportStepHintsResponseResourcesRunMissionRequestRunMissionResponseSubmitFindingRequestSubmitFindingResponseSubmitResultRequestSubmitResultResponseTestPluginConnectionRequestTestPluginConnectionResponseTokenUsageToolCallResultToolDefinitionToolDescriptorProtoToolResultsRequestToolResultsResponseUpdatePluginConfigRequestUpdatePluginConfigResponseWaitMissionRequestWaitMissionResponseEnumsContentTrustDispatchModeParseQualityPackage gibson.daemon.v1ServicesDaemonServiceBuildComponentCompleteMissionCUEConnectCreateMissionCreateMissionDefinitionCreateTargetDeleteTargetGetAgentStatusGetCapabilityManifestGetComponentLogsGetMissionDefinitionGetMissionGraphGetMissionHistoryGetMissionLayoutGetMyPermissionsGetTargetHoverMissionCUEListAgentsListMissionDefinitionsListMissionsListMyMembershipsListPluginsListTargetsListToolsPauseMissionPingQueryPluginRenewCapabilityGrantResumeMissionRunMissionSaveMissionLayoutShowComponentStartComponentStatusStopComponentStopMissionSubscribeUpdateMissionDefinitionUpdateTargetValidateMissionCUEWatchManifestInvalidationsMessagesAgentEventAgentInfoBuildComponentRequestBuildComponentResponseCUECompletionItemCUEDiagnosticCapabilitiesCheckpointMetadataCompleteMissionCUERequestCompleteMissionCUEResponseConnectRequestConnectResponseCreateMissionDefinitionRequestCreateMissionDefinitionResponseCreateMissionRequestCreateMissionResponseCreateTargetRequestCreateTargetResponseDeleteTargetRequestDeleteTargetResponseEventFindingEventFindingInfoGetAgentStatusRequestGetAgentStatusResponseGetComponentLogsRequestGetComponentLogsResponseGetMissionDefinitionRequestGetMissionDefinitionResponseGetMissionGraphRequestGetMissionGraphResponseGetMissionHistoryRequestGetMissionHistoryResponseGetMissionLayoutRequestGetMissionLayoutResponseGetMyPermissionsRequestGetMyPermissionsResponseGetTargetRequestGetTargetResponseHoverMissionCUERequestHoverMissionCUEResponseLLMEventListAgentsRequestListAgentsResponseListMissionDefinitionsRequestListMissionDefinitionsResponseListMissionsRequestListMissionsResponseListMyMembershipsRequestListMyMembershipsResponseListPluginsRequestListPluginsResponseListTargetsRequestListTargetsResponseListToolsRequestListToolsResponseLogEntryMembershipMissionMissionCheckpointMissionDefinitionInfoMissionEventMissionGraphMissionGraphEdgeMissionGraphNodeMissionGraphViewportMissionInfoMissionLayoutMissionMetricsMissionRunNodePositionOperationResultOrchestratorEventPauseMissionRequestPauseMissionResponsePermissionComponentGrantPermissionTeamMembershipPingRequestPingResponsePluginInfoQueryPluginRequestQueryPluginResponseRenewCapabilityGrantRequestRenewCapabilityGrantResponseResumeMissionRequestResumeMissionResponseRunMissionRequestRunMissionResponseSaveMissionLayoutRequestSaveMissionLayoutResponseShowComponentRequestShowComponentResponseStartComponentRequestStartComponentResponseStatusRequestStatusResponseStopComponentRequestStopComponentResponseStopMissionRequestStopMissionResponseSubscribeRequestSubscribeResponseToolEventToolInfoUpdateMissionDefinitionRequestUpdateMissionDefinitionResponseUpdateTargetRequestUpdateTargetResponseValidateMissionCUERequestValidateMissionCUEResponseEnumsMissionStatusPackage gibson.graph.v1ServicesGraphServiceGetFindingCountsGetFindingTimeSeriesGetFindingsGetGraphContextGetGraphStatsGetGraphSummaryGetMissionGraphGetTenantGraphQueryPathsWatchGraphUpdatesMessagesCountBucketEdgeFindingGetFindingCountsRequestGetFindingCountsResponseGetFindingTimeSeriesRequestGetFindingTimeSeriesResponseGetFindingsRequestGetFindingsResponseGetGraphContextRequestGetGraphContextResponseGetGraphStatsRequestGetGraphStatsResponseGetGraphSummaryRequestGetGraphSummaryResponseGetMissionGraphRequestGetMissionGraphResponseGetTenantGraphRequestGetTenantGraphResponseGraphSummaryStatsGraphUpdateNeighborEdgeNodeNodeCountByLabelPathQueryPathsRequestQueryPathsResponseTimeSeriesPointWatchGraphUpdatesRequestEnumsFindingCountGroupByGraphUpdate.KindPackage gibson.graphrag.v1MessagesAttackChainAttackPatternAttackStepCertificateCustomNodeDiscoveryResultDomainEndpointEvidenceExplicitRelationshipFindingFindingNodeGraphNodeGraphQueryHierarchyDefHostIFPDefListValueMapValueOntologyExtensionPortQueryResultRelationshipSameAsPairServiceSubdomainTechnologyValueEnumsQueryScopePackage gibson.harness.v1ServicesHarnessCallbackServiceAuthorizeCallToolProtoCallToolProtoStreamCancelMissionCreateMissionDelegateToAgentDeleteSessionContextDevboxExecFindSimilarAttacksFindSimilarFindingsGenerateNodeIDGetAttackChainsGetCredentialGetFindingsGetMissionResultsGetMissionRunHistoryGetMissionStatusGetPlanContextGetRelatedFindingsGetRunFindingsGetSessionContextGetTaxonomySchemaLLMCompleteLLMCompleteStructuredLLMCompleteWithToolsLLMStreamListAgentsListMissionsListPluginsListToolsObservePutSessionContextQueryNodesQueryPluginQueueToolWorkRecordSpanRecordSpansReportStepHintsRunMissionSearchToolsSubmitFindingToolResultsValidateFindingValidateGraphNodeValidateRelationshipWaitForMissionWorkspaceCommitWorkspaceGetInfoWorkspaceListWorkspaceListFilesWorkspacePushWorkspaceReadFileWorkspaceWriteFileWorldViewMessagesAccountObservationAnyValueAttackChainAttackPatternAttackStepAuthorizeRequestAuthorizeResponseBasicAuthCallToolProtoRequestCallToolProtoResponseCallToolProtoStreamRequestCallToolProtoStreamResponseCancelMissionRequestCancelMissionResponseCertificateObservationContextInfoCreateMissionRequestCreateMissionResponseCredentialCredentialObservationDelegateToAgentRequestDelegateToAgentResponseDeleteSessionContextRequestDeleteSessionContextResponseDevboxExecExitDevboxExecRequestDevboxExecResponseDomainObservationEndpointObservationFindSimilarAttacksRequestFindSimilarAttacksResponseFindSimilarFindingsRequestFindSimilarFindingsResponseFindingFilterFindingNodeGenerateNodeIDRequestGenerateNodeIDResponseGetAttackChainsRequestGetAttackChainsResponseGetCredentialRequestGetCredentialResponseGetFindingsRequestGetFindingsResponseGetMissionResultsRequestGetMissionResultsResponseGetMissionRunHistoryRequestGetMissionRunHistoryResponseGetMissionStatusRequestGetMissionStatusResponseGetPlanContextRequestGetPlanContextResponseGetRelatedFindingsRequestGetRelatedFindingsResponseGetRunFindingsRequestGetRunFindingsResponseGetSessionContextRequestGetSessionContextResponseGetTaxonomySchemaRequestGetTaxonomySchemaResponseGraphNodeGraphRAGResultHarnessAgentDescriptorHarnessErrorHarnessHealthStatusHarnessPluginDescriptorHarnessToolDescriptorHistoricalValueItemHostObservationJSONSchemaNodeKeyValueLLMCompleteRequestLLMCompleteResponseLLMCompleteStructuredRequestLLMCompleteStructuredResponseLLMCompleteWithToolsRequestLLMCompleteWithToolsResponseLLMMessageLLMStreamRequestLLMStreamResponseListAgentsRequestListAgentsResponseListMissionsRequestListMissionsResponseListPluginsRequestListPluginsResponseListToolsRequestListToolsResponseLongTermMemoryResultMissionConstraintsMissionFilterMissionInfoMissionMemoryItemMissionMemoryResultMissionMetricsMissionResultMissionRunSummaryMissionStatusInfoNodeReferenceOAuthCredentialObserveRequestObserveResponsePlanContextPortObservationPropertyMappingPutSessionContextRequestPutSessionContextResponseQueryNodesRequestQueryNodesResponseQueryPluginRequestQueryPluginResponseQueueToolWorkRequestQueueToolWorkResponseRecordSpanRequestRecordSpanResponseRecordSpansRequestRecordSpansResponseRelationshipRelationshipMappingReportStepHintsRequestReportStepHintsResponseRunMissionRequestRunMissionResponseSearchToolsCandidateSearchToolsRequestSearchToolsResponseSpanSpanEventStepHintsSubdomainObservationSubmitFindingRequestSubmitFindingResponseTaxonomyCapabilityTaxonomyMappingTaxonomyNodeTypeTaxonomyPropertyTaxonomyRelationshipTypeTaxonomyTargetTypeTaxonomyTechniqueTaxonomyTechniqueTypeTechnologyObservationTokenUsageToolCallToolCompleteEventToolDefToolErrorEventToolPartialResultEventToolProgressEventToolResultToolResultsRequestToolResultsResponseToolWarningEventTraversalOptionsTraversalResultValidateFindingRequestValidateFindingResponseValidateGraphNodeRequestValidateGraphNodeResponseValidateRelationshipRequestValidateRelationshipResponseValidationErrorValidationResponseWaitForMissionRequestWaitForMissionResponseWorkspaceCommitRequestWorkspaceCommitResponseWorkspaceGetInfoRequestWorkspaceGetInfoResponseWorkspaceInfoWorkspaceListFilesRequestWorkspaceListFilesResponseWorkspaceListRequestWorkspaceListResponseWorkspacePushRequestWorkspacePushResponseWorkspaceReadFileRequestWorkspaceReadFileResponseWorkspaceWriteFileRequestWorkspaceWriteFileResponseWorldEntityWorldViewRequestWorldViewResponseEnumsCredentialTypeMemoryTierMissionStatusRunScopeSpanKindStatusCodeWorldEntityKindPackage gibson.identity.v1ServicesIdentityServiceWhoAmIMessagesComponentGrantEffectiveGrantSourcePluginGrantEffectiveWhoAmIRequestWhoAmIResponseEnumsGrantSource.KindPrincipalKindPackage gibson.manifest.v1MessagesAgentContractCapabilityManifestComponentCapabilityComponentLivenessCrossComponentRuleGetCapabilityManifestRequestGetCapabilityManifestResponseLimitsAndQuotasManifestInvalidationEventMemoryPermissionsPluginContractPluginMethodTenantContextToolContractWatchManifestInvalidationsRequestWatchManifestInvalidationsResponseEnumsCrossComponentRule.EffectManifestInvalidationEvent.EventTypeToolIdempotencyPackage gibson.mission.v1MessagesAgentNodeConfigConditionNodeConfigDataPolicyJoinNodeConfigLLMSlotConfigMissionConstraintsMissionDefinitionMissionDependenciesMissionEdgeMissionNodeParallelNodeConfigPluginNodeConfigRepositoryConfigRetryPolicyReusePolicyToolNodeConfigWorkspaceConfigWorkspaceSettingsEnumsBackoffStrategyLanguageMergeStrategyNodeTypePackage gibson.plugin.v1ServicesPluginInvokeServicePluginInvokeMessagesPluginErrorPluginInvokeRequestPluginInvokeResponseEnumsPluginError.KindPackage gibson.pluginadmin.v1ServicesPluginAdminServiceEditPluginSecretBindingGetPluginInstallListPluginInstallsRegisterPluginRevokePluginSecretBindingMessagesEditPluginSecretBindingRequestEditPluginSecretBindingResponseGetPluginInstallRequestGetPluginInstallResponseListPluginInstallsRequestListPluginInstallsResponsePluginInstallSummaryPluginManifestValidationErrorPluginSecretBindingRegisterPluginRequestRegisterPluginResponseRevokePluginSecretBindingRequestRevokePluginSecretBindingResponseEnumsPluginInstallStatusPackage gibson.target.v1MessagesTargetTargetFilterPackage gibson.tool.v1ServicesToolServiceExecuteGetDescriptorHealthStreamExecuteMessagesExecuteRequestExecuteResponseGetDescriptorRequestGetDescriptorResponseHealthRequestHealthResponseStreamExecuteRequestStreamExecuteResponseToolCancelRequestToolCompleteToolErrorToolPartialResultToolProgressToolStartRequestToolWarningPackage gibson.types.v1MessagesComplianceMappingEvidenceFindingGraphQueryMissionRunSummaryMitreMappingReproStepResultResultErrorTaskTaskConstraintsEnumsEvidenceTypeFindingSeverityFindingStatusQueryScopeResultStatusPackage taxonomy.v1MessagesAccountAgentRunCertificateComplianceMappingComplianceSignalCredentialDomainEndpointEvidenceFindingGraphNodeHostListValueLlmCallMapValueMissionMissionRunPortRelationshipScopeServiceSubdomainTechniqueTechnologyToolExecutionValueEnumsCoreNodeTypeCoreRelationType