{"id":256877,"date":"2026-07-29T08:02:36","date_gmt":"2026-07-29T15:02:36","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=256877"},"modified":"2026-07-29T12:47:26","modified_gmt":"2026-07-29T19:47:26","slug":"tell-your-model-when-to-think-harder","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/tell-your-model-when-to-think-harder\/","title":{"rendered":"Tell your model when to think harder\u00a0"},"content":{"rendered":"<p>Not every question deserves the same amount of thought. Renaming a variable\u00a0isn&#8217;t\u00a0the same as debugging a memory leak, and they\u00a0don&#8217;t\u00a0need the same level of thinking. So why should your model treat them the same way every time?<\/p>\n<p>Starting in Visual Studio 18.9 Insiders 2, it doesn&#8217;t have to. Supported models now come with a thinking effort control, so you can dial up the reasoning when a problem is genuinely hard and dial it back down when it isn&#8217;t. It&#8217;s a small knob with a big payoff: better-matched answers, and more control over how many credits you spend getting them.<\/p>\n<h2 aria-level=\"1\">A dial, not a switch<\/h2>\n<p>Thinking effort is exactly what it sounds like: how much reasoning a model does before it answers. It shows up as a set of named levels, and which ones you get depends on the model.<\/p>\n<p>Here&#8217;s\u00a0what each level is for:<\/p>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Low\u00a0<\/strong>&#8211; Quick responses with minimal reasoning. Great for straightforward questions and everyday code suggestions, and it consumes fewer AI credits.<\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Medium\u00a0<\/strong>&#8211; Balanced reasoning and speed, and usually the default. A solid fit for typical coding tasks.<\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>High\u00a0<\/strong>&#8211; Deeper reasoning for complex problems. Reach for it when\u00a0you&#8217;re\u00a0staring down a tricky algorithm, an architecture decision, or a bug that\u00a0won&#8217;t\u00a0let go.<\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><strong>Extra High\u00a0and\u00a0Max<\/strong>\u00a0&#8211; The most reasoning some models offer, for the gnarliest problems where you want the model to leave nothing on the table.<\/li>\n<\/ul>\n<p>Which levels\u00a0show up\u00a0depends on the model\u00a0you&#8217;ve\u00a0picked, so the list you see is tailored to what that model\u00a0actually supports. A few models\u00a0don&#8217;t\u00a0expose\u00a0a thinking\u00a0control at all, and\u00a0that&#8217;s\u00a0fine too:\u00a0they&#8217;ll\u00a0show a dash and keep working as they always have.<\/p>\n<h2 aria-level=\"1\">Set it where you already work<\/h2>\n<p>Setting it is quick. Open the model picker and click\u00a0Manage models\u00a0to bring up the expanded model management window, then adjust the thinking level for each model from there.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/model-picker-manage-models-option.webp\"><img decoding=\"async\" class=\"aligncenter wp-image-256903\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/model-picker-manage-models-option.webp\" alt=\"Manage models option shown at the bottom of the model picker\" width=\"415\" height=\"196\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/model-picker-manage-models-option.webp 784w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/model-picker-manage-models-option-300x142.webp 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/model-picker-manage-models-option-768x362.webp 768w\" sizes=\"(max-width: 415px) 100vw, 415px\" \/><\/a><\/p>\n<p>In the management view, thinking effort sits in its own column, next to each model&#8217;s capabilities, context size, and cost.\u00a0So\u00a0the same place you go to compare models is now the place you tune how they think. Pick a model, glance at what it can do and what it costs, and set how hard it should work, all in one pass.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/thinking-effort-config.webp\"><img decoding=\"async\" class=\"wp-image-256902 size-full aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/thinking-effort-config.webp\" alt=\"Thinking level config shown in expanded model details view\" width=\"1426\" height=\"1072\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/thinking-effort-config.webp 1426w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/thinking-effort-config-300x226.webp 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/thinking-effort-config-1024x770.webp 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2026\/07\/thinking-effort-config-768x577.webp 768w\" sizes=\"(max-width: 1426px) 100vw, 1426px\" \/><\/a><\/p>\n<h2 aria-level=\"1\">Consume your usage credits where they count<\/h2>\n<p>Here&#8217;s\u00a0the part that adds up over a long day. Higher thinking levels do more reasoning, which consumes more\u00a0credits. Lower levels use fewer. When you match the thinking effort level to the task, you stop consuming more credits than you\u00a0need to\u00a0for shallow-reasoning questions.<\/p>\n<p>That means you can keep a model on <strong>Low<\/strong> for the dozens of small asks that fill a normal session, then bump it\u00a0to\u00a0<strong>High<\/strong> for the one hard problem that\u00a0actually needs\u00a0it. Same model, same conversation, right amount of thought each time. Your usage budget stretches further, and\u00a0you&#8217;re\u00a0the one deciding where it goes.<\/p>\n<h2 aria-level=\"1\">Give it a try<\/h2>\n<p>Thinking effort is a quiet feature that changes how the everyday feels: less waiting on simple questions, more depth on the hard ones. It lives in the model management view, which does a lot more than this one setting. For the full tour, check out\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/pick-manage-and-get-the-most-from-your-models\/\">Pick, manage, and get the most from your models<\/a>.<\/p>\n<p>Try it in Visual Studio 18.9 Insiders 2 or later, and let us know what you think.<\/p>\n<p>More coming soon!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not every question deserves the same amount of thought. Renaming a variable\u00a0isn&#8217;t\u00a0the same as debugging a memory leak, and they\u00a0don&#8217;t\u00a0need the same level of thinking. So why should your model treat them the same way every time? Starting in Visual Studio 18.9 Insiders 2, it doesn&#8217;t have to. Supported models now come with a thinking [&hellip;]<\/p>\n","protected":false},"author":54963,"featured_media":256902,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[155],"tags":[],"class_list":["post-256877","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio"],"acf":[],"blog_post_summary":"<p>Not every question deserves the same amount of thought. Renaming a variable\u00a0isn&#8217;t\u00a0the same as debugging a memory leak, and they\u00a0don&#8217;t\u00a0need the same level of thinking. So why should your model treat them the same way every time? Starting in Visual Studio 18.9 Insiders 2, it doesn&#8217;t have to. Supported models now come with a thinking [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/256877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/54963"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=256877"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/256877\/revisions"}],"predecessor-version":[{"id":256906,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/256877\/revisions\/256906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/256902"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=256877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=256877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=256877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}