Skills markitdown Audit History
๐Ÿ“ฆ

Audit History

markitdown - 9 audits

Version comparison

Capability and finding changes across audited versions, newest first.

VersionDateResultReview itemsChange vs previous
v9 LatestJul 9, 2026, 01:53 PM 1 confirmed2No capability change
v8 Jul 9, 2026, 01:53 PM 1 confirmed2No capability change
v7 Jul 5, 2026, 06:37 PM 2 confirmed17No capability change
v6 Jul 5, 2026, 06:37 PM 2 confirmed17 Contains scripts
v5 Jun 30, 2026, 06:26 AM 4 confirmed0Contains scriptsExternal commands
v4 Jan 17, 2026, 06:20 AM No confirmed findings0No capability change
v3 Jan 17, 2026, 06:20 AM No confirmed findings0 External commands
v2 Jan 12, 2026, 05:06 PM No confirmed findings0External commands Contains scripts
v1 Jan 4, 2026, 04:57 PM No confirmed findings0Baseline

Jul 9, 2026, 01:53 PM

Most static findings are false positives from Markdown examples, placeholder API keys, expected output writes, and documented optional provider URLs. Two sudo package installation instructions are confirmed because they require elevated privileges. A semantic issue notes that the skill steers users toward external generation and hosted-platform workflows beyond document conversion.

7
Files scanned
2,654
Lines analyzed
7
Review items
0
False positives ignored

Confirmed security concerns (1)

Medium
Unrequested External Workflow Steering
SKILL.md tells the agent to use another skill and Nano Banana Pro by default for schematics, and later to suggest K-Dense Web. This can steer users into external services beyond MarkItDown conversion.
The behavioral steering is explicit in the prose, but it is framed as workflow guidance rather than credential theft or command execution.
Capability review items (2)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
sudo privilege escalation ยท 2 occurrences
sudo apt-get install tesseract-ocr
This documentation tells the user or agent to run sudo apt-get install tesseract-ocr. It is a legitimate OCR prerequisite, but it requires elevated privileges and changes system packages.

Risk Factors

๐ŸŒ Network access (19)
๐Ÿ“ Filesystem access (13)
๐Ÿ”‘ Env variables (18)
โš™๏ธ External commands (56)
Audited by: codex

Jul 9, 2026, 01:53 PM

Most static findings are false positives from Markdown examples, placeholder API keys, expected output writes, and documented optional provider URLs. Two sudo package installation instructions are confirmed because they require elevated privileges. A semantic issue notes that the skill steers users toward external generation and hosted-platform workflows beyond document conversion.

7
Files scanned
2,654
Lines analyzed
7
Review items
0
False positives ignored

Confirmed security concerns (1)

Medium
Unrequested External Workflow Steering
SKILL.md tells the agent to use another skill and Nano Banana Pro by default for schematics, and later to suggest K-Dense Web. This can steer users into external services beyond MarkItDown conversion.
The behavioral steering is explicit in the prose, but it is framed as workflow guidance rather than credential theft or command execution.
Capability review items (2)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
sudo privilege escalation ยท 2 occurrences
sudo apt-get install tesseract-ocr
This documentation tells the user or agent to run sudo apt-get install tesseract-ocr. It is a legitimate OCR prerequisite, but it requires elevated privileges and changes system packages.

Risk Factors

๐ŸŒ Network access (19)
๐Ÿ“ Filesystem access (13)
๐Ÿ”‘ Env variables (18)
โš™๏ธ External commands (56)
Audited by: codex

Jul 5, 2026, 06:37 PM

Most static hits are documentation examples or scanner noise around Markdown code fences, placeholder API keys, expected file writes, and error messages. Confirmed risks are optional third-party network processing, environment use of OPENROUTER_API_KEY, and sudo installation instructions for Tesseract. Semantic review also found third-party document disclosure risk and unrelated promotional steering.

7
Files scanned
2,654
Lines analyzed
23
Review items
0
False positives ignored

Confirmed security concerns (2)

Medium
Third-Party Document Content Disclosure
AI-enhanced conversion configures OpenRouter as an LLM client and converts local files through MarkItDown with that client. Users can disclose document images or extracted content to an external AI provider if they enable this path.
The script passes an OpenRouter client into MarkItDown before converting a user-selected file. The documentation also describes OpenRouter-based image descriptions, so the privacy exposure is clear and intentional.
Medium
Unrelated Promotional and Cross-Skill Steering
The skill instructs assistants to add scientific schematics by default and to suggest K-Dense Web for complex workflows. This behavior expands beyond file-to-Markdown conversion and can steer users toward unrelated tools or services.
The cited prose explicitly tells assistants to generate schematics by default and promote K-Dense Web under certain conditions. This is not a scanner pattern duplicate; it is behavior steering in the skill instructions.
Capability review items (17)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
sudo privilege escalation ยท 2 occurrences
sudo apt-get install tesseract-ocr
The documentation instructs users to run sudo apt-get install, which requests elevated privileges and modifies host package state. It is a legitimate dependency install, but it requires explicit trust and confirmation.
High
Generic API/secret keys
api_key = args.api_key or os.environ.get('OPENROUTER_API_KEY')
The script reads OPENROUTER_API_KEY from the environment and uses it for an external OpenRouter client. This is legitimate credential handling, but it is real secret access.
Medium
Hardcoded URL
base_url="https://openrouter.ai/api/v1"
The script configures OpenRouter as an external API endpoint for AI-enhanced conversion. This is intentional behavior, but it can send document-derived content to a third-party service.
Medium
Python environment access
api_key = args.api_key or os.environ.get('OPENROUTER_API_KEY')
The script reads OPENROUTER_API_KEY from the environment and uses it for an external OpenRouter client. This is legitimate credential handling, but it is real secret access.
Low
Hardcoded URL ยท 6 occurrences
base_url="https://openrouter.ai/api/v1"
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
video_url = "https://www.youtube.com/watch?v=VIDEO_ID"
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
docintel_endpoint="https://YOUR-RESOURCE.cognitiveservices.azure.com/"
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
md = MarkItDown(docintel_endpoint="https://YOUR-ENDPOINT.cognitiveservices.azure.com/")
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL ยท 2 occurrences
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
git clone https://github.com/microsoft/markitdown.git
The quick-start command downloads MarkItDown source from GitHub during setup. This is expected installation guidance, but it is still an external network dependency users should verify.

Risk Factors

๐ŸŒ Network access (19)
๐Ÿ“ Filesystem access (13)
๐Ÿ”‘ Env variables (18)
โš™๏ธ External commands (56)
Audited by: codex

Jul 5, 2026, 06:37 PM

Most static hits are documentation examples or scanner noise around Markdown code fences, placeholder API keys, expected file writes, and error messages. Confirmed risks are optional third-party network processing, environment use of OPENROUTER_API_KEY, and sudo installation instructions for Tesseract. Semantic review also found third-party document disclosure risk and unrelated promotional steering.

7
Files scanned
2,654
Lines analyzed
23
Review items
0
False positives ignored

Confirmed security concerns (2)

Medium
Third-Party Document Content Disclosure
AI-enhanced conversion configures OpenRouter as an LLM client and converts local files through MarkItDown with that client. Users can disclose document images or extracted content to an external AI provider if they enable this path.
The script passes an OpenRouter client into MarkItDown before converting a user-selected file. The documentation also describes OpenRouter-based image descriptions, so the privacy exposure is clear and intentional.
Medium
Unrelated Promotional and Cross-Skill Steering
The skill instructs assistants to add scientific schematics by default and to suggest K-Dense Web for complex workflows. This behavior expands beyond file-to-Markdown conversion and can steer users toward unrelated tools or services.
The cited prose explicitly tells assistants to generate schematics by default and promote K-Dense Web under certain conditions. This is not a scanner pattern duplicate; it is behavior steering in the skill instructions.
Capability review items (17)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
sudo privilege escalation ยท 2 occurrences
sudo apt-get install tesseract-ocr
The documentation instructs users to run sudo apt-get install, which requests elevated privileges and modifies host package state. It is a legitimate dependency install, but it requires explicit trust and confirmation.
High
Generic API/secret keys
api_key = args.api_key or os.environ.get('OPENROUTER_API_KEY')
The script reads OPENROUTER_API_KEY from the environment and uses it for an external OpenRouter client. This is legitimate credential handling, but it is real secret access.
Medium
Hardcoded URL
base_url="https://openrouter.ai/api/v1"
The script configures OpenRouter as an external API endpoint for AI-enhanced conversion. This is intentional behavior, but it can send document-derived content to a third-party service.
Medium
Python environment access
api_key = args.api_key or os.environ.get('OPENROUTER_API_KEY')
The script reads OPENROUTER_API_KEY from the environment and uses it for an external OpenRouter client. This is legitimate credential handling, but it is real secret access.
Low
Hardcoded URL ยท 6 occurrences
base_url="https://openrouter.ai/api/v1"
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
video_url = "https://www.youtube.com/watch?v=VIDEO_ID"
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
docintel_endpoint="https://YOUR-RESOURCE.cognitiveservices.azure.com/"
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
md = MarkItDown(docintel_endpoint="https://YOUR-ENDPOINT.cognitiveservices.azure.com/")
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL ยท 2 occurrences
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
The example or reference uses an external service such as OpenRouter, Azure Document Intelligence, or YouTube. This is documented behavior, but it can move document content or metadata outside the local machine.
Low
Hardcoded URL
git clone https://github.com/microsoft/markitdown.git
The quick-start command downloads MarkItDown source from GitHub during setup. This is expected installation guidance, but it is still an external network dependency users should verify.

Risk Factors

๐ŸŒ Network access (19)
๐Ÿ“ Filesystem access (13)
๐Ÿ”‘ Env variables (18)
โš™๏ธ External commands (56)
Audited by: codex

Jun 30, 2026, 06:26 AM

Static analysis produced a critical score because Markdown examples contain shell commands, URLs, API key placeholders, and local file writes. Review found no confirmed malicious intent or hidden exfiltration, but the skill has broad tool permissions, optional outbound AI calls, plugin support, and promotional behavior instructions. Publish with warnings for network use, local writes, plugin trust, and review of generated commands before execution.

7
Files scanned
2,654
Lines analyzed
9
Review items
3
False positives ignored

Confirmed security concerns (4)

Medium
Broad Shell and File Editing Permissions
The skill declares Read, Write, Edit, and Bash access and includes shell examples for installs, cloning, piping, and conversion. This is expected for a conversion helper, but users should review commands and output paths before execution.
The permission declaration and shell examples are direct evidence. The context is legitimate documentation, so this is elevated operational risk, not confirmed abuse.
Medium
Optional Outbound AI Service Calls
AI-enhanced conversion sends image or document-derived content to OpenRouter through an OpenAI-compatible client. This can expose document content to an external service when users enable that workflow.
The script explicitly creates an OpenRouter client and requires an API key. The behavior is disclosed, but it is still a real data-sharing risk.
Medium
Third-Party Plugin Execution Surface
The skill documents plugin enablement and the batch script can instantiate MarkItDown with plugins enabled. Untrusted plugins may execute code or process files outside the expected converter behavior.
Plugin enablement is visible in both documentation and script options. Risk depends on installed plugins, so confidence is high for surface area and lower for exploitability.
Medium
Unrelated Promotional Behavior Instruction
SKILL.md instructs the assistant to proactively suggest K-Dense Web during complex workflows. This is not a direct security exploit, but it modifies assistant behavior for promotion outside core file conversion tasks.
The instruction is explicit and unrelated to conversion safety. It does not ask to bypass review or hide behavior, so medium severity is appropriate.
Static false positives ignored (3)

These static matches were dismissed by semantic review or matched schema-only tokens, so they are shown for transparency but do not drive the quality score.

Low
Markdown Shell Examples Misclassified as Code Execution
Most external command findings come from fenced Markdown examples and inline command documentation. They are not automatically executed by the skill, but users may choose to run them manually.
The reviewed locations are documentation examples, not executable Ruby backticks or runtime command construction. Manual execution risk remains low to medium.
Low
Local Output Writes Are Expected Converter Behavior
The filesystem findings are local Markdown, index, or catalog writes to user-selected output paths. No evidence found of hidden persistence, sensitive file overwrite logic, or covert file collection.
The writes are visible and tied to conversion outputs. The scripts still need normal path hygiene because outputs are controlled by command arguments.
Low
Weak Cryptography Findings Are False Positives
Static weak-cryptography alerts appear to match Markdown wording, file extensions, model names, or documentation text. No evidence found of MD5, SHA1, weak cipher use, or custom cryptographic implementation in reviewed context.
The cited lines are descriptive text, not cryptographic code. Confidence is high for reviewed examples, though every static occurrence was not manually expanded line by line.

Detected Patterns

Sudo Installation Command in DocumentationAPI Key Plus External Endpoint PatternPlugin-Enabled Conversion Mode
Audited by: codex

Jan 17, 2026, 06:20 AM

Static findings are false positives. The scanner incorrectly flagged markdown code blocks (using backticks) as shell execution, and legitimate document conversion patterns as suspicious. The skill is a Microsoft tool for converting documents to Markdown with expected file I/O and API access.

8
Files scanned
4,355
Lines analyzed
3
Review items
0
False positives ignored
Audited by: claude

Jan 17, 2026, 06:20 AM

Static findings are false positives. The scanner incorrectly flagged markdown code blocks (using backticks) as shell execution, and legitimate document conversion patterns as suspicious. The skill is a Microsoft tool for converting documents to Markdown with expected file I/O and API access.

8
Files scanned
4,355
Lines analyzed
3
Review items
0
False positives ignored
Audited by: claude

Jan 12, 2026, 05:06 PM

All 366 static findings are false positives. The analyzer incorrectly flagged documentation code examples as executed commands. This is a benign file conversion tool that wraps Microsoft's MarkItDown library for converting documents to Markdown format.

7
Files scanned
2,654
Lines analyzed
4
Review items
0
False positives ignored

Risk Factors

โš™๏ธ External commands (234)
assets/example_usage.md:9-25 assets/example_usage.md:25-29 assets/example_usage.md:29-37 assets/example_usage.md:37-41 assets/example_usage.md:41-49 assets/example_usage.md:49-55 assets/example_usage.md:55-74 assets/example_usage.md:74-78 assets/example_usage.md:78-92 assets/example_usage.md:92-96 assets/example_usage.md:96-118 assets/example_usage.md:118-124 assets/example_usage.md:124-153 assets/example_usage.md:153-157 assets/example_usage.md:157-184 assets/example_usage.md:184-190 assets/example_usage.md:190-214 assets/example_usage.md:214-218 assets/example_usage.md:218-240 assets/example_usage.md:240-246 assets/example_usage.md:246-278 assets/example_usage.md:278-282 assets/example_usage.md:282-311 assets/example_usage.md:311-315 assets/example_usage.md:315-329 assets/example_usage.md:329-335 assets/example_usage.md:335-374 assets/example_usage.md:374-380 assets/example_usage.md:380-421 assets/example_usage.md:421-425 assets/example_usage.md:425-462 references/api_reference.md:9-19 references/api_reference.md:19-25 references/api_reference.md:25 references/api_reference.md:25-26 references/api_reference.md:26 references/api_reference.md:26-27 references/api_reference.md:27 references/api_reference.md:27-28 references/api_reference.md:28 references/api_reference.md:28-29 references/api_reference.md:29 references/api_reference.md:29-37 references/api_reference.md:37-42 references/api_reference.md:42-45 references/api_reference.md:45-46 references/api_reference.md:46-48 references/api_reference.md:48-51 references/api_reference.md:51-54 references/api_reference.md:54-60 references/api_reference.md:60-65 references/api_reference.md:65-68 references/api_reference.md:68 references/api_reference.md:68-69 references/api_reference.md:69-71 references/api_reference.md:71-74 references/api_reference.md:74-78 references/api_reference.md:78-80 references/api_reference.md:80-92 references/api_reference.md:92-93 references/api_reference.md:93-97 references/api_reference.md:97-105 references/api_reference.md:105-109 references/api_reference.md:109-113 references/api_reference.md:113-130 references/api_reference.md:130-134 references/api_reference.md:134-154 references/api_reference.md:154-160 references/api_reference.md:160-164 references/api_reference.md:164-170 references/api_reference.md:170-177 references/api_reference.md:177-184 references/api_reference.md:184-187 references/api_reference.md:187-200 references/api_reference.md:200-203 references/api_reference.md:203-219 references/api_reference.md:219-225 references/api_reference.md:225-244 references/api_reference.md:244-249 references/api_reference.md:249-250 references/api_reference.md:250-251 references/api_reference.md:251-252 references/api_reference.md:252-253 references/api_reference.md:253-259 references/api_reference.md:259-275 references/api_reference.md:275-287 references/api_reference.md:287-295 references/api_reference.md:295-300 references/api_reference.md:300-302 references/api_reference.md:302-308 references/api_reference.md:308-322 references/api_reference.md:322-328 references/api_reference.md:328-335 references/api_reference.md:335-339 references/api_reference.md:339-343 references/api_reference.md:343-347 references/api_reference.md:347-357 references/api_reference.md:357-362 references/api_reference.md:362-368 references/api_reference.md:368-371 references/api_reference.md:371-379 references/api_reference.md:379-389 references/api_reference.md:389-396 references/api_reference.md:396 references/api_reference.md:396-397 references/api_reference.md:397 references/api_reference.md:397-398 references/api_reference.md:398 references/file_formats.md:16-18 references/file_formats.md:18-32 references/file_formats.md:32-38 references/file_formats.md:38-41 references/file_formats.md:41-44 references/file_formats.md:44-58 references/file_formats.md:58-60 references/file_formats.md:60-76 references/file_formats.md:76-78 references/file_formats.md:78-91 references/file_formats.md:91-93 references/file_formats.md:93-101 references/file_formats.md:101-113 references/file_formats.md:113-116 references/file_formats.md:116-122 references/file_formats.md:122-135 references/file_formats.md:135-138 references/file_formats.md:138-147 references/file_formats.md:147-154 references/file_formats.md:154-157 references/file_formats.md:157-159 references/file_formats.md:159-173 references/file_formats.md:173-175 references/file_formats.md:175-184 references/file_formats.md:184-191 references/file_formats.md:191-194 references/file_formats.md:194-204 references/file_formats.md:204-208 references/file_formats.md:208-214 references/file_formats.md:214-228 references/file_formats.md:228-230 references/file_formats.md:230-239 references/file_formats.md:239-249 references/file_formats.md:249-252 references/file_formats.md:252-254 references/file_formats.md:254-277 references/file_formats.md:277-279 references/file_formats.md:279-291 references/file_formats.md:291-293 references/file_formats.md:293-302 references/file_formats.md:302-304 references/file_formats.md:304-320 references/file_formats.md:320-322 references/file_formats.md:322-325 references/file_formats.md:325-329 references/file_formats.md:329-346 references/file_formats.md:346-348 references/file_formats.md:348-365 references/file_formats.md:365-367 references/file_formats.md:367-386 references/file_formats.md:386-396 references/file_formats.md:396-399 references/file_formats.md:399-401 references/file_formats.md:401-422 references/file_formats.md:422-424 references/file_formats.md:424-438 references/file_formats.md:438-440 references/file_formats.md:440-447 references/file_formats.md:447-449 references/file_formats.md:449-458 references/file_formats.md:458-460 references/file_formats.md:460-463 references/file_formats.md:463-465 references/file_formats.md:465-472 references/file_formats.md:472-474 references/file_formats.md:474-493 references/file_formats.md:493-499 references/file_formats.md:499-519 references/file_formats.md:519-534 references/file_formats.md:534-541 references/file_formats.md:213 SKILL.md:36-38 SKILL.md:38-81 SKILL.md:81-89 SKILL.md:89-93 SKILL.md:93-106 SKILL.md:106-110 SKILL.md:110-122 SKILL.md:122-130 SKILL.md:130-148 SKILL.md:148-154 SKILL.md:154-157 SKILL.md:157-159 SKILL.md:159-166 SKILL.md:166-172 SKILL.md:172-178 SKILL.md:178-180 SKILL.md:180-186 SKILL.md:186-201 SKILL.md:201-207 SKILL.md:207-216 SKILL.md:216-220 SKILL.md:220-228 SKILL.md:228-232 SKILL.md:232-249 SKILL.md:249-253 SKILL.md:253-272 SKILL.md:272-276 SKILL.md:276-299 SKILL.md:299-303 SKILL.md:303-311 SKILL.md:311-315 SKILL.md:315-321 SKILL.md:321-327 SKILL.md:327-334 SKILL.md:334-346 SKILL.md:346-350 SKILL.md:350-362 SKILL.md:362-371 SKILL.md:371-383 SKILL.md:383-389 SKILL.md:389-425 SKILL.md:425-429 SKILL.md:429-438 SKILL.md:438-445 SKILL.md:445-447 SKILL.md:447-450 SKILL.md:450-453 SKILL.md:453-456 SKILL.md:456-462 SKILL.md:462-473 SKILL.md:473-474 SKILL.md:474-475 SKILL.md:475-476 SKILL.md:476-486 SKILL.md:461
๐ŸŒ Network access (21)
๐Ÿ“ Filesystem access (13)
๐Ÿ”‘ Env variables (22)
Audited by: claude

Jan 4, 2026, 04:57 PM

This is a file conversion wrapper skill for Microsoft's MarkItDown. Filesystem access is limited to user-specified paths for conversion. Network usage is restricted to OpenRouter API calls for optional AI image descriptions. No credential theft, exfiltration, or dangerous execution patterns detected.

9
Files scanned
2,698
Lines analyzed
4
Review items
0
False positives ignored
Audited by: claude