# Extension points — microsoft/rushstack

> Canonical page: https://codevetter.com/unpack/rushstack/extension-points

# Extension points — microsoft/rushstack

Scanned commit 1e18b16f029299f53a966878aff2ce187dd65a51 (2026-10-01). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Extension mechanisms are explicit and operate at several layers: CLI commands, operation graphs, project tasks, generated documentation, and MCP tools. Configuration rigs supply reusable defaults, while public APIs support programmatic invocation. Hooks distinguish session registration from per-graph execution customization. Plugin mechanisms load executable code and therefore carry compatibility and trust requirements.
- Rush adds custom actions from CommandLineConfiguration.commands and plugin-supplied configurations; a plugin-provided build command suppresses automatic creation of the default build command. — [libraries/rush-lib/src/cli/RushCommandLineParser.ts#L336-353](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/libraries/rush-lib/src/cli/RushCommandLineParser.ts#L336-L353) [libraries/rush-lib/src/cli/RushCommandLineParser.ts#L601-627](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/libraries/rush-lib/src/cli/RushCommandLineParser.ts#L601-L627)
- Rush session hooks runAnyPhasedCommand and runPhasedCommand[actionName] allow registration before createOperationsAsync receives the operation set and execution context. — [libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L817-830](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L817-L830) [libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L1016-1040](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L1016-L1040)
- onGraphCreatedAsync exposes the constructed graph and initial snapshot; graph hooks can transform operation environments and observe request results, including native PATH augmentation and afterExecuteRequestAsync. — [libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L1129-1144](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L1129-L1144) [libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L1155-1175](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/libraries/rush-lib/src/cli/scriptActions/PhasedScriptAction.ts#L1155-L1175)
- Heft plugins implement apply(session, heftConfiguration, pluginOptions); task and lifecycle interfaces distinguish scope, and an optional accessor lets other plugins request access within the same phase. — [apps/heft/src/pluginFramework/IHeftPlugin.ts#L13-50](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/heft/src/pluginFramework/IHeftPlugin.ts#L13-L50)
- Heft configuration extends rig profiles and augments phasesByName/tasksByName with named task plugins, options, and dependencies; Explorer’s TypeScript task explicitly depends on pre-compile-copy. — [apps/api-extractor/config/heft.json#L13-31](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-extractor/config/heft.json#L13-L31) [apps/lockfile-explorer/config/heft.json#L13-23](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/lockfile-explorer/config/heft.json#L13-L23) [apps/lockfile-explorer/config/heft.json#L41-64](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/lockfile-explorer/config/heft.json#L41-L64)
- API Extractor supports loadConfigAndInvoke or invoke with prepared configuration; ExtractorConfig.prepare accepts runtime configuration objects, but requires extends expansion and an absolute configObjectFullPath when supplied. — [apps/api-extractor/src/api/Extractor.ts#L186-201](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-extractor/src/api/Extractor.ts#L186-L201) [apps/api-extractor/src/api/ExtractorConfig.ts#L711-732](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-extractor/src/api/ExtractorConfig.ts#L711-L732)
- Documenter resolves config-listed plugin packages, requires apiDocumenterPluginManifest version 1000, selects named features, permits one MarkdownDocumenterFeature, and invokes initialization, pre-write, and finished callbacks. — [apps/api-documenter/src/plugin/PluginLoader.ts#L28-58](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-documenter/src/plugin/PluginLoader.ts#L28-L58) [apps/api-documenter/src/plugin/PluginLoader.ts#L66-106](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-documenter/src/plugin/PluginLoader.ts#L66-L106) [apps/api-documenter/src/documenters/MarkdownDocumenter.ts#L117-119](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-documenter/src/documenters/MarkdownDocumenter.ts#L117-L119) [apps/api-documenter/src/documenters/MarkdownDocumenter.ts#L321-329](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/api-documenter/src/documenters/MarkdownDocumenter.ts#L321-L329)
- MCP loads schema-validated mcpPlugins from common/config/rush-mcp/rush-mcp.json, prepares their autoinstallers, reads rush-mcp-plugin.json manifests, and exposes registerTool with Zod schema shapes and bound executeAsync callbacks. — [apps/rush-mcp-server/src/pluginFramework/RushMcpPluginLoader.ts#L82-137](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/rush-mcp-server/src/pluginFramework/RushMcpPluginLoader.ts#L82-L137) [apps/rush-mcp-server/src/pluginFramework/RushMcpPluginSession.ts#L25-47](https://github.com/microsoft/rushstack/blob/1e18b16f029299f53a966878aff2ce187dd65a51/apps/rush-mcp-server/src/pluginFramework/RushMcpPluginSession.ts#L25-L47)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
