feat(sdk): Implement dynamic system instructions#18863
Conversation
|
Hi @mbleigh, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this. We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines. Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed. Thank you for your understanding and for being a part of our community! |
|
Hi there! Thank you for your contribution to Gemini CLI. To improve our contribution process and better track changes, we now require all pull requests to be associated with an existing issue, as announced in our recent discussion and as detailed in our CONTRIBUTING.md. This pull request is being closed because it is not currently linked to an issue. Once you have updated the description of this PR to link an issue (e.g., by adding How to link an issue: Thank you for your understanding and for being a part of our community! |
Summary of ChangesHello @mbleigh, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces dynamic system instructions to the Gemini CLI SDK, enabling the agent to receive context-aware instructions that can change during a conversation. This significantly improves the agent's ability to maintain consistent and relevant behavior by adapting its core directives based on the ongoing session. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces support for dynamic system instructions, allowing them to be generated by a function on each turn. While powerful, this feature introduces a high risk of prompt injection because the context includes the conversation transcript. To prevent prompt injection, user-provided input should be avoided in content passed to the LLM (llmContent). If the input is needed for display purposes, returnDisplay should be used instead. Additionally, there's a high-severity issue in the error handling for the dynamic instruction function. If the function fails, the error is currently logged to the console, and the agent proceeds with stale or empty instructions, which could lead to unpredictable behavior or security vulnerabilities. It's recommended to re-throw the error to allow the SDK user to handle it appropriately.
…emove placeholder README
- adds tests to SDK tools - adds ModelVisibleError for SDK error handling - adds sdk test-data to .prettierignore
…ts to SDK tools\n- adds ModelVisibleError for SDK error handling\n- adds sdk test-data to .prettierignore
- Added support for passing a function as `instructions` in `GeminiCliAgentOptions`. - Implemented runtime resolution of instructions using `SessionContext`. - Added robust error handling for dynamic instruction generation. - Added integration tests verifying both static and dynamic instructions. - Updated `SDK_DESIGN.md` to mark the feature as implemented and fix formatting.
9685af6 to
72c2417
Compare
|
Hi there! Thank you for your contribution to Gemini CLI. To improve our contribution process and better track changes, we now require all pull requests to be associated with an existing issue, as announced in our recent discussion and as detailed in our CONTRIBUTING.md. This pull request is being closed because it is not currently linked to an issue. Once you have updated the description of this PR to link an issue (e.g., by adding How to link an issue: Thank you for your understanding and for being a part of our community! |
| - Presumably the transcript is kept updated in memory and also persisted to disk | ||
| by default? | ||
|
|
||
| # `Next Steps` |
|
Hi there! Thank you for your contribution to Gemini CLI. To improve our contribution process and better track changes, we now require all pull requests to be associated with an existing issue, as announced in our recent discussion and as detailed in our CONTRIBUTING.md. This pull request is being closed because it is not currently linked to an issue. Once you have updated the description of this PR to link an issue (e.g., by adding How to link an issue: Thank you for your understanding and for being a part of our community! |
Resolved conflicts in: - packages/sdk/src/agent.ts: Merged dynamic system instructions with new tool scheduling logic. - packages/sdk/src/tool.ts: Accepted incoming changes for context binding. - packages/sdk/SDK_DESIGN.md: Kept local changes with status updates.
|
Size Change: -2 B (0%) Total Size: 24.4 MB ℹ️ View Unchanged
|
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
Support for dynamic system instructions.