Skip to content

fix: prevent nil pointer panic when artifact service is not configured#982

Open
123456wda wants to merge 1 commit into
google:mainfrom
123456wda:fix/nil-artifacts-panic
Open

fix: prevent nil pointer panic when artifact service is not configured#982
123456wda wants to merge 1 commit into
google:mainfrom
123456wda:fix/nil-artifacts-panic

Conversation

@123456wda
Copy link
Copy Markdown

When the load_artifacts tool is used without configuring an artifact service, ctx.Artifacts() returns a trackedArtifacts wrapping a nil Artifacts interface. Calling List/Load on this wrapper causes a nil pointer dereference panic.

Changes:

  • agent/callback_context.go: In NewToolContext and NewCallbackContextWithArtifactTracking, only wrap Artifacts in trackedArtifacts when the underlying service is not nil. This prevents the nil dereference at the source.
  • tool/loadartifactstool/load_artifacts_tool.go: Add nil checks for ctx.Artifacts() in appendInitialInstructions and processLoadArtifactsFunctionCall to return a clear error message instead of panicking.
  • tool/loadartifactstool/load_artifacts_tool_test.go: Add two test cases covering nil Artifacts scenarios (ProcessRequest with no function call and with a load_artifacts function call).

Fixes #283

Please ensure you have read the contribution guide before creating a pull request.

Link to Issue or Description of Change

1. Link to an existing issue (if applicable):

  • Closes: #issue_number
  • Related: #issue_number

2. Or, if no issue exists, describe the change:

If applicable, please follow the issue templates to provide as much detail as
possible.

Problem:
A clear and concise description of what the problem is.

Solution:
A clear and concise description of what you want to happen and why you choose
this solution.

Testing Plan

Please describe the tests that you ran to verify your changes. This is required
for all PRs that are not small documentation or typo fixes.

Unit Tests:

  • I have added or updated unit tests for my change.
  • All unit tests pass locally.

Please include a summary of passed go test results.

Manual End-to-End (E2E) Tests:

Please provide instructions on how to manually test your changes, including any
necessary setup or configuration. Please provide logs or screenshots to help
reviewers better understand the fix.

Checklist

  • I have read the CONTRIBUTING.md document.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • I have manually tested my changes end-to-end.
  • Any dependent changes have been merged and published in downstream modules.

Additional context

Add any other context or screenshots about the feature request here.

When the load_artifacts tool is used without configuring an artifact
service, ctx.Artifacts() returns a trackedArtifacts wrapping a nil
Artifacts interface. Calling List/Load on this wrapper causes a nil
pointer dereference panic.

Changes:
- agent/callback_context.go: In NewToolContext and
  NewCallbackContextWithArtifactTracking, only wrap Artifacts in
  trackedArtifacts when the underlying service is not nil. This prevents
  the nil dereference at the source.
- tool/loadartifactstool/load_artifacts_tool.go: Add nil checks for
  ctx.Artifacts() in appendInitialInstructions and
  processLoadArtifactsFunctionCall to return a clear error message
  instead of panicking.
- tool/loadartifactstool/load_artifacts_tool_test.go: Add two test cases
  covering nil Artifacts scenarios (ProcessRequest with no function call
  and with a load_artifacts function call).

Fixes google#283
@google-cla
Copy link
Copy Markdown

google-cla Bot commented Jun 8, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Panic when Artifact tool is not properly setup

1 participant