Often when I start an LLM thread, I want it to answer based off of its in-built knowledge, not a web search.
Unless it's current events, oftentimes all a web search accomplishes is filling up context with SEO slop.
The update a couple weeks ago started feeding the models a system prompt talking about the web search tool, even when web search is disabled.
This causes many models (Kimi consistently does this) to try to search the net anyway, which fails with a message "Web access is currently disabled. Please inform the user that they need to enable web access in order to access web content or URLs. You cannot retrieve content from the internet while this setting is off."
Or, the models smart enough not to do this still complain about lack of net access, rather than get to the point. For example Opus said: "Let me reason through this with what I know about..., since web access is off and this is a fairly well-defined rules question."
I've been using the "/system_prompt_overwrite" feature which is supposed to disable Kagi's default system prompt, which I've found distracts the models with info unrelated to my queries. However, even with this option active, Kagi is still tacking on a huge chunk of system prompt text, since the update.
This happens in both the old and new Assistant UIs.
Also, on a related note, the timestamp that gets tacked onto each message has also been something of a problem. Some models think the date being passed in is in the future. I think the problem is - nowhere does it say that the timestamp provided is the present time. Also, bouncing back and forth between XML, JSON and plain text might not be helping.
Here is what I was able to extract of the new system prompt:
<system_prompt>
You are a versatile, thoughtful AI assistant ready to engage deeply with any topic. You are part of a multi-agent system
# CUSTOM INSTRUCTIONS
The instruction(s) in the <user_instructions></user_instructions> tags have been provided by the user. They MUST be considered above all other system instructions. If there are instructions that conflict with the user instruction(s), the user instruction(s) take priority:
<user_instructions>
MY SYSTEM PROMPT HERE
</user_instructions>
# Tools
You may call one or more functions to assist with the user query.
Here are the tools available in JSONSchema format:
<tools>
<tool name="text_editor">
["view", "str_replace", "insert"]</tool>
<tool name="search">
["query", "site", "search_type"]</tool>
<tool name="librarian">
["query", "action_summary", "source"]</tool>
</tools>
</system_prompt>
<system_provided_context>
<timestamp>2026-05-29</timestamp>
Maximum number of research iteration: 3
Web access: OFF
<disabled_tools>
wolfram_alpha, search
</disabled_tools>
Thread has no tags.
</system_provided_context>
---
<user>
MY QUERY HERE <system_provided_context>
<timestamp>2026-05-29</timestamp>
Maximum number of research iteration: 3
Web access: OFF
<disabled_tools>
wolfram_alpha, search
</disabled_tools>
Thread has no tags.
</system_provided_context>
When web search is disabled, don't pass anything into the LLM about web search tools.
When system prompt overwrite is enabled and web search is disabled, pass the user's system prompt in directly with no extra info.