vxcontrol/pentagi · error
installer handler is required
Error message
installer handler is required
What it means
GetAssistantExecutor requires the Installer handler to be non-nil; it backs the 'installer' tool that installs packages in the sandbox container. Construction fails fast with this error when Installer is nil.
Source
Thrown at backend/pkg/tools/tools.go:826
store: fte.store,
definitions: cfg.Definitions,
handlers: cfg.Handlers,
barriers: barriers,
summarizer: cfg.Summarizer,
}, nil
}
func (fte *flowToolsExecutor) GetAssistantExecutor(cfg AssistantExecutorConfig) (ContextToolsExecutor, error) {
if cfg.Adviser == nil {
return nil, fmt.Errorf("adviser handler is required")
}
if cfg.Coder == nil {
return nil, fmt.Errorf("coder handler is required")
}
if cfg.Installer == nil {
return nil, fmt.Errorf("installer handler is required")
}
if cfg.Memorist == nil {
return nil, fmt.Errorf("memorist handler is required")
}
if cfg.Pentester == nil {
return nil, fmt.Errorf("pentester handler is required")
}
if cfg.Searcher == nil {
return nil, fmt.Errorf("searcher handler is required")
}
container, err := fte.db.GetFlowPrimaryContainer(context.Background(), fte.flowID)
if err != nil {
return nil, fmt.Errorf("failed to get container %d: %w", fte.flowID, err)
}View on GitHub (pinned to ea665308ba)
Solutions
- Assign a non-nil Installer handler in AssistantExecutorConfig.
- Verify the installer handler construction path executed and returned non-nil.
- Validate the full config struct before calling GetAssistantExecutor.
Example fix
// before
executor, err := fte.GetAssistantExecutor(AssistantExecutorConfig{
Adviser: adviser, Coder: coder,
}) // Installer nil
// after
executor, err := fte.GetAssistantExecutor(AssistantExecutorConfig{
Adviser: adviser, Coder: coder, Installer: installer,
}) Defensive patterns
Strategy: validation
Validate before calling
if cfg.Installer == nil {
return errors.New("installer handler missing from AssistantExecutorConfig")
} Type guard
func hasInstaller(cfg tools.AssistantExecutorConfig) bool {
return cfg.Installer != nil
} Try / catch
executor, err := fte.GetAssistantExecutor(cfg)
if err != nil {
if strings.Contains(err.Error(), "installer handler is required") {
return fmt.Errorf("wiring bug: installer handler not built: %w", err)
}
return err
} Prevention
- Do not gate installer handler creation behind optional feature flags.
- Construct all handlers in one place and assert non-nil before use.
- Cover executor construction in integration tests.
When it happens
Trigger: Calling GetAssistantExecutor with cfg.Installer == nil, e.g. omitting the installer handler when building the config struct.
Common situations: Partial agent wiring in custom deployments; installer handler creation skipped behind a feature flag; refactoring dropped the field assignment.
Related errors
- adviser handler is required
- coder handler is required
- memorist handler is required
- pentester handler is required
- searcher handler is required
AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01).
Data as JSON: /api/errors/82e835704904a6f7.
Report an issue: GitHub.