Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (raw pass, confidence 0.70)
>>> str(URL('http://εμπορικόσήμα.eu/шлях/這裡'))
'http://xn--jxagkqfkduily1i.eu/%D1%88%D0%BB%D1%8F%D1%85/%E9%80%99%E8%A3%A1'
likely benign
LLM, confidence 0.92
Docs example of an internationalized Greek hostname being converted to punycode.
Reasoning
This is a doctest in yarl's API docs showing IDN handling. The Greek label is a real example word ("trademark") that is punycoded to xn--jxagkqfkduily1i, so the homoglyph flag reflects a deliberate internationalization example, not an attack.
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (raw pass, confidence 0.80)
>>> str(URL('http://εμπορικόσήμα.eu/шлях/這裡'))
'http://xn--jxagkqfkduily1i.eu/%D1%88%D0%BB%D1%8F%D1%85/%E9%80%99%E8%A3%A1'
likely benign
LLM, confidence 0.92
Same IDN doctest; mixed scripts are intentional to demonstrate Unicode host handling.
Reasoning
The mixed-script flag comes from the same IDN doctest. Mixing Greek, Cyrillic and Han in a demo URL is what the documentation is meant to show, and the code runs no payload.
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (raw pass, confidence 0.70)
>>> url = URL('http://εμπορικόσήμα.eu/шлях/這裡')
>>> str(url)
'http://xn--jxagkqfkduily1i.eu/%D1%88%D0%BB%D1%8F%D1%85/%E9%80%99%E8%A3%A1'
likely benign
LLM, confidence 0.92
Docs example converting a Unicode hostname to its ASCII form.
Reasoning
Same yarl IDN example, here through a variable and str(url). It shows the punycode output and is part of the library documentation.
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (raw pass, confidence 0.80)
>>> url = URL('http://εμπορικόσήμα.eu/шлях/這裡')
>>> str(url)
'http://xn--jxagkqfkduily1i.eu/%D1%88%D0%BB%D1%8F%D1%85/%E9%80%99%E8%A3%A1'
likely benign
LLM, confidence 0.92
Same IDN example; the mixed-script flag is expected for this demo.
Reasoning
Mixed-script warning on the same documentation example of Unicode hostnames; it is expected in an IDN demonstration.
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (raw pass, confidence 0.70)
>>> url.human_repr()
'http://εμπορικόσήμα.eu/шлях/這裡'
likely benign
LLM, confidence 0.92
Docs example showing the human-readable Unicode representation of a URL.
Reasoning
Doctest showing human_repr() returning the Unicode form of the host. Documentation of display behavior, no executable risk.
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (raw pass, confidence 0.80)
>>> url.human_repr()
'http://εμπορικόσήμα.eu/шлях/這裡'
likely benign
LLM, confidence 0.92
Same human_repr doctest; the multilingual sample explains the mixed-script flag.
Reasoning
Mixed-script flag on the human_repr doctest, which uses the same deliberate multilingual IDN sample.
-
identifier `cуфікс` contains homoglyph candidates: у (0443)→y, і (0456)→i, с (0441)→c (raw pass, confidence 0.70)
URL('http://example.com/path/to.doc')
>>> URL('http://example.com/path/to').with_suffix('.cуфікс')
URL('http://example.com/path/to.c%D1%83%D1%84%D1%96%D0%BA%D1%81')
likely benign
LLM, confidence 0.85
Docs example applying with_suffix using a Ukrainian-looking suffix string.
Reasoning
Doctest for with_suffix in which the suffix is Ukrainian "суфікс". The Latin 'c' mixed with Cyrillic letters looks like a typo or a demo of non-ASCII suffixes, and the output is percent-encoded. It is documentation with no execution impact.
-
identifier `cуфікс` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)
URL('http://example.com/path/to.doc')
>>> URL('http://example.com/path/to').with_suffix('.cуфікс')
URL('http://example.com/path/to.c%D1%83%D1%84%D1%96%D0%BA%D1%81')
likely benign
LLM, confidence 0.85
Same with_suffix doctest; mixed Latin and Cyrillic is probably an authoring slip.
Reasoning
Mixed Latin/Cyrillic flag on the same with_suffix doctest. The likely cause is a stray Latin letter in a documentation string, which is not a real obfuscation technique here.
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (raw pass, confidence 0.70)
>>> url = URL('http://εμπορικόσήμα.eu/這裡')
>>> str(url)
'http://xn--jxagkqfkduily1i.eu/%E9%80%99%E8%A3%A1'
likely benign
LLM, confidence 0.92
Docs example of a Unicode hostname with CJK characters being punycoded.
Reasoning
Doctest with the same IDN sample (Greek label plus Chinese characters) and its punycode output. It is documentation of library behavior.
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (raw pass, confidence 0.80)
>>> url = URL('http://εμπορικόσήμα.eu/這裡')
>>> str(url)
'http://xn--jxagkqfkduily1i.eu/%E9%80%99%E8%A3%A1'
likely benign
LLM, confidence 0.92
Same IDN doctest; mixed scripts are part of the demonstration.
Reasoning
Mixed-script flag on the IDN doctest with Greek and CJK characters. It is intended demonstration content.
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (raw pass, confidence 0.70)
>>> url.human_repr()
'http://εμπορικόσήμα.eu/這裡'
likely benign
LLM, confidence 0.92
Docs example of the human-readable form of an IDN URL.
Reasoning
human_repr doctest on the same IDN sample, shown in an RST docs file. No code is executed and there is no obfuscation.
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (raw pass, confidence 0.80)
>>> url.human_repr()
'http://εμπορικόσήμα.eu/這裡'
likely benign
LLM, confidence 0.92
Same human_repr example; the mixed-script flag is expected.
Reasoning
Mixed-script flag on the human_repr documentation example; expected for an internationalization demo.
-
[embedded bash] command name is a variable (`$yarl`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)
[dir:yarl] $ yarl/__init__.py
[dir:yarl] $ python -m towncrier build \
-- --version 'VERSION_WITHOUT_LEADING_V'
likely benign
LLM, confidence 0.93
Embedded shell example in a yarl release guide using variable-prefixed command names.
Reasoning
This is a release guide in documentation. The bash lines are illustrative commands for maintainers (cd yarl, python -m towncrier build, git commit). The scanner flags the command name being a variable, which is an artifact of the docs using a $yarl directory prefix and $python/$git placeholders. Nothing here executes automatically; it is rst documentation.
-
[embedded bash] command name is a variable (`$python`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)
[dir:yarl] $ yarl/__init__.py
[dir:yarl] $ python -m towncrier build \
-- --version 'VERSION_WITHOUT_LEADING_V'
[dir:yarl] $ git commit -v CHANGES{.rst,/} yarl/__init__.py
likely benign
LLM, confidence 0.93
Documented release step invoking python -m towncrier and git commit.
Reasoning
Documentation example of a towncrier build command followed by git commit. The $python placeholder is typical of a human-readable release procedure, not a dropper or hidden execution path.
-
[embedded bash] command name is a variable (`$git`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)
-- --version 'VERSION_WITHOUT_LEADING_V'
[dir:yarl] $ git commit -v CHANGES{.rst,/} yarl/__init__.py
likely benign
LLM, confidence 0.93
Documented git commit step in release instructions.
Reasoning
A documented git commit command in a release guide. The variable-command flag is a false positive from the doc-style placeholder syntax.
-
[embedded bash] command name is a variable (`$git`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)
[dir:yarl] $ git tag \
-s 'VERSION_WITH_LEADING_V' \
-m 'VERSION_WITH_LEADING_V' \
likely benign
LLM, confidence 0.93
Documented signed git tag step in the release guide.
Reasoning
Documented signed git tag command for a release, with version placeholders. Standard maintainer instructions, not executed by the repository.
-
[embedded bash] command name is a variable (`$git`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)
[dir:yarl] $ git push origin 'VERSION_WITH_LEADING_V'
likely benign
LLM, confidence 0.93
Documented git push of the version tag to origin.
Reasoning
Documented git push of the release tag. Ordinary release procedure text in a docs file.
-
identifier `μονοπάτι` contains homoglyph candidates: ο (03BF)→o, ν (03BD)→v, ο (03BF)→o (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `μονοπάτι` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `μονοπάτι` contains homoglyph candidates: ο (03BF)→o, ν (03BD)→v, ο (03BF)→o (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `μονοπάτι` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `abcфух` contains homoglyph candidates: у (0443)→y, х (0445)→x (in string/comment) (raw pass, confidence 0.35)
s = "abcфух%30%0a" * 1024
assert quoter()(s) == "abc%D1%84%D1%83%D1%850%0A" * 1024
-
identifier `abcфух` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)
s = "abcфух%30%0a" * 1024
assert quoter()(s) == "abc%D1%84%D1%83%D1%850%0A" * 1024
-
identifier `μονοπάτι` contains homoglyph candidates: ο (03BF)→o, ν (03BD)→v, ο (03BF)→o (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `μονοπάτι` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `μονοπάτι` contains homoglyph candidates: ο (03BF)→o, ν (03BD)→v, ο (03BF)→o (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `μονοπάτι` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `να` contains homoglyph candidates: ν (03BD)→v, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
("μονοπάτι/../../να/ᴜɴɪ/ᴄᴏᴅᴇ", "να/ᴜɴɪ/ᴄᴏᴅᴇ"),
("μονοπάτι/../../να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/.", "να/𝕦𝕟𝕚/𝕔𝕠𝕕𝕖/"),
]
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
def test_to_idna() -> None:
url = URL("http://εμπορικόσήμα.eu")
assert "http://xn--jxagkqfkduily1i.eu" == str(url)
url = URL("http://einlaß.de/")
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
def test_to_idna() -> None:
url = URL("http://εμπορικόσήμα.eu")
assert "http://xn--jxagkqfkduily1i.eu" == str(url)
url = URL("http://einlaß.de/")
-
identifier `εμπορικόσήμα` contains homoglyph candidates: ο (03BF)→o, ρ (03C1)→p, κ (03BA)→k, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)
def test_to_str() -> None:
url = URL("http://εμπορικόσήμα.eu/")
assert "http://xn--jxagkqfkduily1i.eu/" == str(url)
-
identifier `εμπορικόσήμα` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
def test_to_str() -> None:
url = URL("http://εμπορικόσήμα.eu/")
assert "http://xn--jxagkqfkduily1i.eu/" == str(url)
-
identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)
url = URL("http://john@example.com")
url2 = url.with_password("п:а")
assert url2.raw_password == "%D0%BF%3A%D0%B0"
assert url2.password == "п:а"
-
identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)
assert url2.raw_password == "%D0%BF%3A%D0%B0"
assert url2.password == "п:а"
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.