The new Windows Terminal and the original Windows console host, all in the same place!
This report summarizes scanner evidence for microsoft/terminal, a C++ project with 105,294 GitHub stars. SynthScan examined 359,680 lines of code across 1404 source files, recording 1294 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 3.8 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 1268 finding(s).
Are imports declared and package/API names verified? 18 finding(s).
Are wrappers, guards, and repeated structures necessary? 8 finding(s).
Which changes need focused human review? 1294 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1294 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/WindbgExtension.js | 1 | COMMENT | |
| LOW | …Y/GUIConsole/GUIConsole.WPF/Properties/AssemblyInfo.cs | 21 | // COM, set the ComVisible attribute to true on that type. | COMMENT |
| LOW | …Y/GUIConsole/GUIConsole.WPF/Properties/AssemblyInfo.cs | 41 | )] | COMMENT |
| LOW | …onsole/GUIConsole.WPF/Properties/Resources.Designer.cs | 1 | //------------------------------------------------------------------------------ | COMMENT |
| LOW | samples/ConPTY/GUIConsole/GUIConsole.ConPTY/Terminal.cs | 21 | /// A stream of VT-100-enabled output from the console. | COMMENT |
| LOW | samples/ConPTY/MiniTerm/MiniTerm/Program.cs | 1 | using System; | COMMENT |
| LOW | …es/ConPTY/MiniTerm/MiniTerm/Properties/AssemblyInfo.cs | 21 | COMMENT | |
| LOW | samples/ConPTY/EchoCon/EchoCon/stdafx.h | 1 | // stdafx.h : include file for standard system include files, | COMMENT |
| LOW | samples/ConPTY/EchoCon/EchoCon/targetver.h | 1 | #pragma once | COMMENT |
| LOW | samples/ConPTY/EchoCon/EchoCon/stdafx.cpp | 1 | // stdafx.cpp : source file that includes just the standard includes | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/pch.h | 21 | #define WIN32_LEAN_AND_MEAN | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/pch.h | 41 | COMMENT | |
| LOW | scratch/ScratchIslandApp/WindowExe/pch.h | 61 | // * Media for ScaleTransform | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/pch.h | 81 | #include <WinUser.h> | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/SampleMain.cpp | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/SampleMain.cpp | 81 | // cause WT to start with Ctrl-C disabled. This wouldn't matter, because it's a Windows-subsystem | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/pch.cpp | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/SampleAppHost.cpp | 61 | COMMENT | |
| LOW | scratch/ScratchIslandApp/WindowExe/resource.h | 1 | //{{NO_DEPENDENCIES}} | COMMENT |
| LOW | scratch/ScratchIslandApp/WindowExe/resource.h | 21 | #ifndef APSTUDIO_READONLY_SYMBOLS | COMMENT |
| LOW | …atch/ScratchIslandApp/WindowExe/SampleIslandWindow.cpp | 201 | OnSize(size.cx, size.cy); | COMMENT |
| LOW | scratch/ScratchIslandApp/SampleApp/pch.h | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | scratch/ScratchIslandApp/SampleApp/pch.h | 21 | // Windows::UI::Xaml::Media::Animation::IStoryboard::GetCurrentTime | COMMENT |
| LOW | scratch/ScratchIslandApp/SampleApp/pch.h | 41 | #include <winrt/Windows.UI.Xaml.Data.h> | COMMENT |
| LOW | scratch/ScratchIslandApp/SampleApp/pch.h | 61 | COMMENT | |
| LOW | scratch/ScratchIslandApp/SampleApp/pch.cpp | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | scratch/ScratchIslandApp/SampleApp/dll/pch.h | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | scratch/ScratchIslandApp/SampleApp/dll/pch.cpp | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | dep/Console/winconp.h | 61 | #define CONSOLE_REGISTRY_FONTFAMILY L"FontFamily" | COMMENT |
| LOW | dep/Console/winconp.h | 81 | #define CONSOLE_REGISTRY_WORD_DELIM L"WordDelimiters" | COMMENT |
| LOW | dep/Console/winconp.h | 101 | #define CONSOLE_REGISTRY_COPYCOLOR L"CopyColor" | COMMENT |
| LOW | dep/Console/winconp.h | 461 | UnregisterConsoleIME( | COMMENT |
| LOW | dep/Console/winconp.h | 481 | #define CONSOLE_OUTPUT_STRING L"CONOUT$" | COMMENT |
| LOW | dep/Console/winconp.h | 601 | #define PID_CONSOLE_WRAPTEXT 2 | COMMENT |
| LOW | dep/Console/winconp.h | 661 | // | COMMENT |
| LOW | dep/Console/condrv.h | 21 | Kernel and user modes. | COMMENT |
| LOW | dep/Console/condrv.h | 61 | #define CD_IO_OBJECT_TYPE_CURRENT_OUTPUT 0x02 | COMMENT |
| LOW | dep/Console/ntcon.h | 1 | // | COMMENT |
| LOW | dep/Console/ntcon.h | 21 | COMMENT | |
| LOW | oss/pcg/include/pcg_random.hpp | 1 | // PCG Random Number Generation for C++ | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 1 | // stb_rect_pack.h - v1.01 - public domain - rectangle packing | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 21 | // No memory allocations; uses qsort() and assert() from stdlib. | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 41 | // | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 61 | ////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 81 | typedef struct stbrp_context stbrp_context; | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 101 | // You should not try to access the 'rects' array from another thread | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 121 | stbrp_coord w, h; | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 141 | // Note: to guarantee best results, either: | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 201 | // | COMMENT |
| LOW | oss/stb/stb_rect_pack.h | 381 | } | COMMENT |
| LOW | oss/chromium/base/numerics/safe_math_clang_gcc_impl.h | 1 | // Copyright 2017 The Chromium Authors. All rights reserved. | COMMENT |
| LOW | oss/chromium/base/numerics/safe_math_arm_impl.h | 21 | COMMENT | |
| LOW | oss/chromium/base/numerics/clamped_math_impl.h | 1 | // Copyright 2017 The Chromium Authors. All rights reserved. | COMMENT |
| LOW | oss/chromium/base/numerics/safe_conversions.h | 1 | // Copyright 2014 The Chromium Authors. All rights reserved. | COMMENT |
| LOW | oss/chromium/base/numerics/safe_conversions.h | 281 | constexpr StrictNumeric(Src value) // NOLINT(runtime/explicit) | COMMENT |
| LOW | oss/chromium/base/numerics/checked_math_impl.h | 1 | // Copyright 2017 The Chromium Authors. All rights reserved. | COMMENT |
| LOW | oss/chromium/base/numerics/safe_math.h | 1 | // Copyright 2017 The Chromium Authors. All rights reserved. | COMMENT |
| LOW | oss/chromium/base/numerics/safe_conversions_impl.h | 1 | // Copyright 2014 The Chromium Authors. All rights reserved. | COMMENT |
| LOW | oss/chromium/base/numerics/safe_conversions_impl.h | 221 | // truncated to fit the mantissa of the floating point. The direction of | COMMENT |
| LOW | oss/chromium/base/numerics/safe_math_shared_impl.h | 1 | // Copyright 2017 The Chromium Authors. All rights reserved. | COMMENT |
| 1160 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | oss/chromium/base/numerics/clamped_math.h | 44 | // This is not an explicit constructor because we want a seamless conversion | COMMENT |
| MEDIUM | oss/chromium/base/numerics/checked_math.h | 44 | // This is not an explicit constructor because we want a seamless conversion | COMMENT |
| MEDIUM | src/renderer/atlas/BackendD3D.cpp | 308 | // it being simple to implement and robust against more peculiar fonts with unusually large/small descenders, et | COMMENT |
| MEDIUM | src/renderer/atlas/BackendD2D.cpp | 679 | // it being simple to implement and robust against more peculiar fonts with unusually large/small descenders, et | COMMENT |
| MEDIUM | src/renderer/atlas/BackendD2D.cpp | 694 | // color, it is seamless. | COMMENT |
| MEDIUM | src/inc/til/color.h | 22 | // Here, we leverage the spec-legality of using unions for type conversions and the | COMMENT |
| LOW | src/tools/vtpipeterm/main.cpp | 13 | #else // Building inside Windows, just use the kernel32 ones. | COMMENT |
| MEDIUM | src/types/CodepointWidthDetector.cpp | 22 | // Fundamentally, the trie is generated by taking all 1114112 codepoints and their assigned values and deduplicating | COMMENT |
| MEDIUM | src/types/UiaTextRangeBase.cpp | 985 | // so leverage size_t(-1) being converted to 0xffff... | COMMENT |
| MEDIUM | src/host/input.cpp | 359 | // Going back to the Win 7 behavior then should make shutdown a lot more robust. | COMMENT |
| MEDIUM | src/host/screenInfo.cpp | 1523 | // Essentially ResetConptyCursorPositionMayBeWrong(), but here we explicitly use our initial generation | COMMENT |
| MEDIUM | src/terminal/parser/base64.cpp | 47 | // Is 4 enough? Certainly not. 6 on the other hand is just way too much. Clearly 5 is just right. | COMMENT |
| MEDIUM | src/terminal/parser/ft_fuzzer/fuzzing_directed.h | 370 | // is designed to leverage the & operator overload to have CFuzzArray | COMMENT |
| MEDIUM | src/interactivity/win32/windowio.cpp | 993 | // so they can be faithfully represented as a user "typing" into the client application. The vision would b | COMMENT |
| LOW | src/cascadia/TerminalApp/TabManagement.cpp | 614 | // GH#11107 - Always just set the item directly first so that if | COMMENT |
| MEDIUM | src/cascadia/TerminalSettingsModel/JsonUtils.h | 1010 | // Cleverly leverage EnumMapper to do the heavy lifting. | COMMENT |
| MEDIUM | …erminalSettingsModel/CascadiaSettingsSerialization.cpp | 1137 | // will fail; we can leverage this to detect when they are equivalent and delete the user's duplicate copies. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 356 | // ┌──────────────────┐ | COMMENT |
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 360 | // ╭ ├──────────────────┤ ├── VT scrollback (partially addressed) | COMMENT |
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 364 | // Console Buffer ──┤ ├──────────────────┤ ├──── VT Viewport (top y = 1) | COMMENT |
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 368 | // ╰ └──────────────────┘ | COMMENT |
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 374 | // ┌──────────────────┐ ╮ | COMMENT |
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 378 | // ╭ ├──────────────────┤ ╮ ╯ | COMMENT |
| MEDIUM⚡ | doc/specs/#13000 - In-process ConPTY.md | 382 | // ╰ └──────────────────┘ ╯ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …Console/GUIConsole.WPF/Properties/Settings.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| HIGH | …onsole/GUIConsole.WPF/Properties/Resources.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| HIGH | src/tools/ColorTool/ColorTool/Resources.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ecs/#885 - Terminal Settings Model/Actions Addendum.md | 44 | ### Step 1: Consolidating actions | COMMENT |
| LOW | …ecs/#885 - Terminal Settings Model/Actions Addendum.md | 100 | ### Step 2: Querying actions | COMMENT |
| LOW | …ecs/#885 - Terminal Settings Model/Actions Addendum.md | 142 | ### Step 3: Settings UI needs | COMMENT |
| LOW⚡ | src/terminal/parser/InputStateMachineEngine.cpp | 979 | // Step 3: check if mouse moved | COMMENT |
| LOW⚡ | src/terminal/parser/InputStateMachineEngine.cpp | 985 | // Step 4: update internal state before returning, even if we couldn't fully understand this | COMMENT |
| LOW | src/terminal/parser/InputStateMachineEngine.cpp | 879 | // Step 1: Translate which button was affected | COMMENT |
| LOW | src/terminal/parser/InputStateMachineEngine.cpp | 935 | // Step 2: Decide whether to set or clear that button's bit | COMMENT |
| LOW | src/server/ObjectHeader.h | 27 | // NOTE: This class must have a virtual method for the stored "this" pointers to match what we're actually looking f | COMMENT |
| LOW | src/cascadia/TerminalConnection/AzureConnection.cpp | 783 | //// Step 8: connecting to said terminal | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/tools/ConsoleBench/main.cpp | 448 | static constexpr std::string_view s_payload_utf8{ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusm | CODE |
| LOW⚡ | src/tools/ConsoleBench/main.cpp | 448 | static constexpr std::string_view s_payload_utf8{ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusm | CODE |
| LOW⚡ | src/tools/ConsoleBench/main.cpp | 450 | static constexpr std::wstring_view s_payload_utf16{ L"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ei | CODE |
| LOW⚡ | src/tools/ConsoleBench/main.cpp | 450 | static constexpr std::wstring_view s_payload_utf16{ L"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ei | CODE |
| LOW⚡ | src/terminal/parser/ft_fuzzer/VTCommandFuzzer.cpp | 117 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | src/terminal/parser/ft_fuzzer/VTCommandFuzzer.cpp | 117 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | src/terminal/parser/ft_fuzzer/VTCommandFuzzer.cpp | 118 | "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem ape | CODE |
| LOW⚡ | src/terminal/parser/ft_fuzzer/VTCommandFuzzer.cpp | 118 | "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem ape | CODE |
| LOW⚡ | src/terminal/parser/ft_fuzzer/VTCommandFuzzer.cpp | 119 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | src/terminal/parser/ft_fuzzer/VTCommandFuzzer.cpp | 119 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/terminal/parser/InputStateMachineEngine.cpp | 979 | // Step 3: check if mouse moved | COMMENT |
| LOW⚡ | src/terminal/parser/InputStateMachineEngine.cpp | 985 | // Step 4: update internal state before returning, even if we couldn't fully understand this | COMMENT |
| LOW | src/terminal/parser/InputStateMachineEngine.cpp | 879 | // Step 1: Translate which button was affected | COMMENT |
| LOW | src/terminal/parser/InputStateMachineEngine.cpp | 935 | // Step 2: Decide whether to set or clear that button's bit | COMMENT |
| LOW | src/interactivity/win32/windowio.cpp | 348 | // we need to check if there is an active popup because otherwise they won't be able to receive shift+key events | COMMENT |
| LOW | src/cascadia/TerminalCore/TerminalSelection.cpp | 480 | // so we need to check if we're pointing to that one before returning it. | COMMENT |
| LOW | src/cascadia/WindowsTerminal/AppHost.cpp | 566 | // We need to check if the top left point of the titlebar of the window is within any screen | COMMENT |
| LOW | …c/cascadia/TerminalSettingsModel/GlobalAppSettings.cpp | 449 | // so we need to check if they were explicitly set | COMMENT |
| LOW | src/cascadia/TerminalConnection/AzureConnection.cpp | 783 | //// Step 8: connecting to said terminal | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/inc/til/mutex.h | 70 | // ensures you don't forget to do so, unlike with std::mutex/std::shared_mutex. | COMMENT |
| LOW | …olorTool/ConsoleTargets/TerminalSchemeConsoleTarget.cs | 13 | Console.WriteLine("Copy and paste the following text into the schemes array of your Windows Terminal setting | CODE |
| MEDIUM | src/terminal/adapter/InteractDispatch.cpp | 83 | // It's worth noting that all of this is bad design in either case. | COMMENT |
| LOW | src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp | 661 | // GH#5209 - make sure to use MONITOR_DEFAULTTONEAREST, so that this will | COMMENT |
| LOW | src/cascadia/TerminalApp/AppCommandlineArgs.cpp | 398 | // GH#10070 - make sure to not use the MRU order when switching | COMMENT |
| LOW | src/cascadia/TerminalControl/TermControl.cpp | 2736 | // GH#2061 - make sure to account for the size the padding _will be_ scaled to | COMMENT |
| LOW | src/cascadia/TerminalControl/TermControl.cpp | 2772 | // GH#2061 - make sure to account for the size the padding _will be_ scaled to | COMMENT |
| LOW | src/cascadia/TerminalConnection/ConptyConnection.cpp | 484 | // GH#11556 - make sure to format the error code to this string as an UNSIGNED int | COMMENT |
| LOW | src/cascadia/TerminalConnection/ConptyConnection.cpp | 521 | // GH#11556 - make sure to format the error code to this string as an UNSIGNED int | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tools/WindbgExtension.js | 24 | return host.namespace.Debugger.Utility.Control.ExecuteCommand("dx Microsoft::Console::Interactivity::ServiceLocator: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/tools/vttests/test-unicode.py | 16 | CODE | |
| LOW | src/tools/vttests/test-unicode.py | 17 | CODE | |
| LOW | src/tools/vttests/test-unicode.py | 18 | CODE | |
| LOW | src/tools/vttests/burrito.py | 17 | CODE | |
| LOW | src/tools/vttests/template.py | 8 | CODE | |
| LOW | src/tools/vttests/template.py | 9 | CODE | |
| LOW | src/tools/vttests/template.py | 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | doc/specs/#1595 - Suggestions UI/dump-workflows.py | 28 | print(f"Error parsing {filename}: {e}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | doc/specs/#1595 - Suggestions UI/dump-workflows.py | 6 | CODE |