AI Slop Code Risk Monitor

logto-io/logto

SlopCodeMonitor badge for logto-io/logto Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

🧑‍🚀 Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.

0.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for logto-io/logto, a TypeScript project with 14,825 GitHub stars. SynthScan examined 709,423 lines of code across 7563 source files, recording 323 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 0.6 (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.

0.6
Adjusted Signal
0.6
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
14.8K
Stars
TypeScript
Language
709.4K
Lines of Code
7.6K
Files
323
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 1.4/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 140 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.6/100 · LOW

Are imports declared and package/API names verified? 183 finding(s).

Agent Over-Engineering Ratio 0.5/100 · LOW

Are wrappers, guards, and repeated structures necessary? 69 finding(s).

PR Review Velocity Impact 2.6/100 · LOW

Which changes need focused human review? 323 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 4HIGH 0MEDIUM 10LOW 309

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 323 distinct pattern matches across 9 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.

Fake / Example Data179 hits · 193 pts
SeverityFileLineSnippetContext
LOWpackages/experience/CHANGELOG.md356 "email": "user@example.com",CODE
LOWpackages/experience/CHANGELOG.md616 loginHint: 'user@example.com',CODE
LOW…shared/components/InputFields/SmartInputField/utils.ts14 'type' | 'pattern' | 'inputMode' | 'placeholder' | 'autoComplete' | 'label'CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx45 expect(inputs[0]?.getAttribute('placeholder')).toBe('MM');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx46 expect(inputs[1]?.getAttribute('placeholder')).toBe('DD');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx47 expect(inputs[2]?.getAttribute('placeholder')).toBe('YYYY');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx249 expect(inputs[0]?.getAttribute('placeholder')).toBe('DD');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx250 expect(inputs[1]?.getAttribute('placeholder')).toBe('MM');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx251 expect(inputs[2]?.getAttribute('placeholder')).toBe('YYYY');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx276 expect(inputs[0]?.getAttribute('placeholder')).toBe('YYYY');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx277 expect(inputs[1]?.getAttribute('placeholder')).toBe('MM');CODE
LOW⚡…ce/src/components/InputFields/DateField/index.test.tsx278 expect(inputs[2]?.getAttribute('placeholder')).toBe('DD');CODE
LOW…experience/src/hooks/use-check-single-sign-on.test.tsx24const email = 'user@example.com';CODE
LOWpackages/experience/src/pages/Consent/index.test.tsx46 primaryEmail: 'user@example.com',CODE
LOW…ce/src/pages/Continue/ExtraProfileForm/test-helpers.ts39 ['YYYY', 'MM', 'DD'].includes(input.getAttribute('placeholder') ?? '')CODE
LOW…ce/src/pages/Continue/ExtraProfileForm/test-helpers.ts42 const found = inputs.find((input) => input.getAttribute('placeholder') === placeholder);CODE
LOW…rc/pages/Continue/ExtraProfileForm/happy-path.test.tsx214 fireEvent.change(streetAddress, { target: { value: '123 Main St' } });CODE
LOW…rc/pages/Continue/ExtraProfileForm/happy-path.test.tsx233 const placeholder = element.getAttribute('placeholder') ?? '';CODE
LOW…rc/pages/Continue/ExtraProfileForm/happy-path.test.tsx237 const found = dateInputs.find((i) => i.getAttribute('placeholder') === ph);CODE
LOW…rc/pages/Continue/ExtraProfileForm/happy-path.test.tsx295 expect(submitted.address.streetAddress).toBe('123 Main St');CODE
LOWpackages/connectors/connector-slack/src/index.test.ts98 name: 'John Doe',CODE
LOWpackages/connectors/connector-slack/src/index.test.ts103 name: 'John Doe',CODE
LOWpackages/connectors/connector-patreon/src/index.test.ts92 full_name: 'Jane Doe',CODE
LOWpackages/connectors/connector-patreon/src/index.test.ts109 name: 'Jane Doe',CODE
LOWpackages/connectors/connector-patreon/src/index.test.ts119 full_name: 'Jane Doe',CODE
LOWpackages/connectors/connector-gitlab/src/index.test.ts87 name: 'John Doe',CODE
LOWpackages/connectors/connector-gitlab/src/index.test.ts102 name: 'John Doe',CODE
LOWpackages/connectors/connector-gitlab/src/index.test.ts107 name: 'John Doe',CODE
LOWpackages/connectors/connector-gitlab/src/index.test.ts127 name: 'John Doe',CODE
LOWpackages/connectors/connector-gitlab/src/index.test.ts142 name: 'John Doe',CODE
LOWpackages/connectors/connector-gitlab/src/index.test.ts146 name: 'John Doe',CODE
LOWpackages/connectors/connector-oidc/src/types.test.ts121 name: 'John Doe',CODE
LOWpackages/connectors/connector-oidc/src/types.test.ts131 name: 'John Doe',CODE
LOWpackages/connectors/connector-smsaero/src/mock.ts3const mockedEmail = 'test@test.com';CODE
LOW…ctors/connector-aliyun-dm/src/single-send-mail.test.ts24 ToAddress: 'user@example.com',CODE
LOW…ctors/connector-aliyun-dm/src/single-send-mail.test.ts48 ToAddress: 'user@example.com',CODE
LOW…s/connectors/connector-smtp2go-email/src/index.test.ts187 user: { primaryEmail: 'user@example.com' },CODE
LOW⚡packages/connectors/connector-apple/src/index.test.ts84 payload: { sub: userId, email: 'foo@bar.com', email_verified: true },CODE
LOW⚡packages/connectors/connector-apple/src/index.test.ts90 email: 'foo@bar.com',CODE
LOW⚡packages/connectors/connector-apple/src/index.test.ts97 payload: { sub: 'userId', email: 'foo@bar.com' },CODE
LOWpackages/connectors/connector-apple/src/index.test.ts108 payload: { sub: userId, email: 'foo@bar.com', email_verified: true },CODE
LOWpackages/core/CHANGELOG.md1471 "email": "user@example.com",CODE
LOWpackages/core/CHANGELOG.md2159 loginHint: 'user@example.com',CODE
LOWpackages/core/src/middleware/koa-error-handler.test.ts169 json: { personalizations: [{ to: [{ email: 'foo@bar.com' }] }] },CODE
LOWpackages/core/src/middleware/koa-error-handler.test.ts187 expect(logged).not.toContain('foo@bar.com');CODE
LOWpackages/core/src/middleware/koa-error-handler.test.ts208 form: { to: 'foo@bar.com' },CODE
LOWpackages/core/src/middleware/koa-error-handler.test.ts227 expect(body).not.toContain('foo@bar.com');CODE
LOWpackages/core/src/middleware/koa-error-handler.test.ts234 expect(tracked).not.toContain('foo@bar.com');CODE
LOW…ore/src/middleware/koa-connector-error-handler.test.ts284 json: { personalizations: [{ to: [{ email: 'foo@bar.com' }] }] },CODE
LOW…ore/src/middleware/koa-connector-error-handler.test.ts302 expect(serialized).not.toContain('foo@bar.com');CODE
LOWpackages/core/src/database/insert-into.test.ts31 primaryEmail: 'foo@bar.com',CODE
LOWpackages/core/src/database/insert-into.test.ts66 primaryEmail: 'foo@bar.com',CODE
LOW⚡packages/core/src/database/insert-into.test.ts82 insertInto({ id: 'foo', username: '123', primaryEmail: 'foo@bar.com', applicationId: 'bar' })CODE
LOW⚡packages/core/src/database/insert-into.test.ts90 primaryEmail: 'foo@bar.com',CODE
LOW⚡packages/core/src/database/insert-into.test.ts100 primaryEmail: 'foo@bar.com',CODE
LOWpackages/core/src/database/update-where.test.ts30 primaryEmail: 'foo@bar.com',CODE
LOWpackages/core/src/database/update-where.test.ts46 set: { username: '123', primaryEmail: 'foo@bar.com', applicationId: 'bar' },CODE
LOWpackages/core/src/queries/one-time-tokens.test.ts41 const email = 'foo@bar.com';CODE
LOWpackages/core/src/oidc/interaction-policy.test.ts409 buildContext({ params: { max_age: '600', login_hint: 'user@example.com' } })CODE
LOWpackages/core/src/oidc/interaction-policy.test.ts411 ).resolves.toEqual({ max_age: '600', login_hint: 'user@example.com' });CODE
119 more matches not shown…
Hyper-Verbose Identifiers69 hits · 69 pts
SeverityFileLineSnippetContext
LOWpackages/connectors/connector-feishu-web/src/index.ts60export async function authorizationCallbackHandler(data: unknown) {CODE
LOW…/src/middleware/koa-serve-domain-verification-files.ts8export default function koaServeDomainVerificationFiles(CODE
LOWpackages/core/src/utils/firebase-scrypt.ts60export async function executeFirebaseScryptHash(CODE
LOWpackages/core/src/utils/password.ts28function isFirebaseScryptAlgorithm(algorithm: string): boolean {CODE
LOW…/src/routes/organization/application/role-relations.ts13export default function applicationRoleRelationRoutes(CODE
LOW…/interaction/verifications/mfa-payload-verification.ts165export async function bindMfaPayloadVerification(CODE
LOW…/interaction/verifications/mfa-payload-verification.ts217export async function verifyMfaPayloadVerification(CODE
LOW…ion/verifications/mandatory-user-profile-validation.ts214export default async function validateMandatoryUserProfile(CODE
LOW…ction/verifications/identifier-payload-verification.ts163async function identifierPayloadVerification(CODE
LOWpackages/integration-tests/src/helpers/mfa-test.ts65export async function addBackupCodesVerification(api: KyInstance, password: string) {CODE
LOWpackages/integration-tests/src/helpers/mfa-test.ts80export async function setupUserWithTotpAndBackupCodes(api: KyInstance, password: string) {CODE
LOWpackages/schemas/src/seeds/management-api.ts85export function getManagementApiResourceIndicator(tenantId: string, path = 'api') {CODE
LOW…ole/src/contexts/SsoConnectorContextProvider/index.tsx21function SsoConnectorContextProvider({ children, ssoConnector, consoleSsoConnector }: Props) {CODE
LOW…rc/mdx-components/CustomDomainEndpointNotice/index.tsx9function CustomDomainEndpointNotice({ variant = 'access' }: Props) {CODE
LOW…s/console/src/mdx-components/OidcCallbackUri/index.tsx44function ConsoleSsoOidcCallbackUri({CODE
LOW…e/src/components/DeleteConnectorConfirmModal/index.tsx12function DeleteConnectorConfirmModal({ isOpen, isLoading, onCancel, onConfirm }: Props) {CODE
LOW…s/OrganizationRolePermissionsAssignmentModal/index.tsx35function OrganizationRolePermissionsAssignmentModal({CODE
LOW…sAssignmentModal/use-organization-scopes-assignment.ts5function useOrganizationScopesAssignment(assignedScopes: OrganizationScope[] = []) {CODE
LOW…sionsAssignmentModal/use-resource-scopes-assignment.ts7function useResourceScopesAssignment(assignedScopes?: Scope[]) {CODE
LOW…tModal/use-organization-role-permissions-assignment.ts11function useOrganizationRolePermissionsAssignment(organizationRoleId: string) {CODE
LOW…reation/CreateForm/AuthorizationFlowSelector/index.tsx10function AuthorizationFlowSelector() {CODE
LOW…s/console/src/components/CreateConnectorForm/index.tsx47function EmailConnectorUpsellBanner() {CODE
LOW…le/src/components/ReadOnlyAccessNotification/index.tsx9function ReadOnlyAccessNotification() {CODE
LOW…components/ManageOrganizationPermissionModal/index.tsx29function ManageOrganizationPermissionModal({ data, onClose }: Props) {CODE
LOW…/TenantSelector/TenantInvitationDropdownItem/index.tsx24function TenantInvitationDropdownItem({ data }: Props) {CODE
LOWpackages/console/src/components/FeatureTag/index.tsx126export function CombinedAddOnAndFeatureTag(props: CombinedAddOnAndFeatureTagProps) {CODE
LOW…le/src/components/SubmitFormChangesActionBar/index.tsx19function SubmitFormChangesActionBar({CODE
LOW…iners/AppContent/TenantNotificationContainer/index.tsx11function TenantNotificationContainer() {CODE
LOW…cationContainer/CreateProductionTenantBanner/index.tsx13function CreateProductionTenantBanner() {CODE
LOW…pages/Connectors/SignInExperienceSetupNotice/index.tsx11function SignInExperienceSetupNotice() {CODE
LOW…omainSettings/MultipleCustomDomainsFormField/index.tsx24function MultipleCustomDomainsFormField() {CODE
LOW…gs/Subscription/DowngradeConfirmModalContent/index.tsx33function DowngradeConfirmModalContent({ currentSku, targetSku }: Props) {CODE
LOW…on/CurrentPlan/AddOnUsageChangesNotification/index.tsx15function AddOnUsageChangesNotification({ className }: Props) {CODE
LOW…ion/CurrentPlan/MauLimitExceededNotification/index.tsx22function MauLimitExceededNotification({ periodicUsage: rawPeriodicUsage, className }: Props) {CODE
LOW…n/CurrentPlan/TokenLimitExceededNotification/index.tsx22function TokenLimitExceededNotification({ periodicUsage, className }: Props) {CODE
LOW…ption/CurrentPlan/PaymentOverdueNotification/index.tsx12function PaymentOverdueNotification({ className }: Props) {CODE
LOW…components/NotEligibleSwitchPlanModalContent/index.tsx37export function NotEligibleSwitchSkuModalContent({CODE
LOW…sole/src/pages/EnterpriseSso/SsoCreationModal/utils.ts5export function categorizeSsoConnectorProviders(providers: SsoConnectorProvidersResponse = []): {CODE
LOW…late/OrganizationRoles/CreateOrganizationRoleModal.tsx35function CreateOrganizationRoleModal({ isOpen, onClose }: Props) {CODE
LOW…oleDetails/Permissions/use-organization-role-scopes.ts9function useOrganizationRoleScopes(organizationRoleId: string) {CODE
LOW…s/ConnectorContent/EmailServiceConnectorForm/index.tsx33function EmailServiceConnectorForm({ extraInfo }: Props) {CODE
LOW…pages/UserSessionDetails/RevokeSessionConfirmModal.tsx16function RevokeSessionConfirmModal({CODE
LOW…onsole/src/pages/ExternalGoogleOneTapLanding/index.tsx14function ExternalGoogleOneTapLanding() {CODE
LOW…nce/contexts/SignInExperienceContextProvider/index.tsx22function SignInExperienceContextProvider({ children }: Props) {CODE
LOW…ignIn/SignInForm/ForgotPasswordMethodEditBox/index.tsx21function ForgotPasswordMethodEditBox() {CODE
LOW…ng/CustomUiForm/CrossOriginOpenerPolicyField/index.tsx17function CrossOriginOpenerPolicyField({ isDisabled }: Props) {CODE
LOW…nce/PageContent/SignUpAndSignInChangePreview/index.tsx17function SignUpAndSignInChangePreview({CODE
LOW…ndSignInChangePreview/PasswordDisabledNotification.tsx15function PasswordDisabledNotification({ after, className }: Props) {CODE
LOW…gnInChangePreview/SignUpAndSignInDiffSection/index.tsx14function SignUpAndSignInDiffSection({ before, after, isAfter = false }: Props) {CODE
LOW…SignInDiffSection/ForgotPasswordMethodsDiffSection.tsx13function ForgotPasswordMethodsDiffSection({ before, after, isAfter = false }: Props) {CODE
LOW…ontent/components/CustomDataProfileNameField/index.tsx5function CustomDataProfileNameField(props: Props) {CODE
LOW…ontent/components/SignInExperienceTabWrapper/index.tsx7function SignInExperienceTabWrapper({ children, ...reset }: Props) {CODE
LOW…eContent/AccountCenter/WebauthnRelatedOriginsField.tsx22function WebauthnRelatedOriginsField({ isAccountApiEnabled }: Props) {CODE
LOW…Content/AccountCenter/RecentAuthenticationFormCard.tsx30function RecentAuthenticationFormCard({ isAccountApiEnabled }: Props) {CODE
LOW…sers/components/DevTenantDataRetentionNotice/index.tsx14function DevTenantDataRetentionNoticeContent() {CODE
LOW…sers/components/DevTenantDataRetentionNotice/index.tsx51function DevTenantDataRetentionNotice() {CODE
LOW…nContent/SettingsSection/EnvironmentVariablesField.tsx15function EnvironmentVariablesField({ className }: Props) {CODE
LOW…ganizationDetails/EditOrganizationRolesModal/index.tsx35function EditOrganizationRolesModal({ organizationId, data, isOpen, onClose, type }: Props) {CODE
LOW…cations/components/ThirdPartyAppGuideLibrary/index.tsx19function ThirdPartyAppGuideLibrary({ onSelectGuide }: Props) {CODE
LOW…ts/ThirdPartyApplicationEmptyDataPlaceHolder/index.tsx19function ThirdPartyApplicationEmptyDataPlaceHolder({ onCreateThirdParty }: Props) {CODE
9 more matches not shown…
Structural Annotation Overuse38 hits · 62 pts
SeverityFileLineSnippetContext
LOWpackages/connectors/connector-google/README.md28## Step 1: Create a project on Google Auth PlatformCOMMENT
LOWpackages/connectors/connector-google/README.md45## Step 2: Create OAuth 2.0 credentialsCOMMENT
LOWpackages/connectors/connector-google/README.md57## Step 3: Configure Logto connector with credentialsCOMMENT
LOWpackages/connectors/connector-google/README.md67## Step 4: Configure scopesCOMMENT
LOWpackages/connectors/connector-google/README.md107## Step 5: Customize authentication promptsCOMMENT
LOWpackages/connectors/connector-google/README.md115## Step 6: General settingsCOMMENT
LOWpackages/connectors/connector-google/README.md138## Step 7: Enable Google One Tap (Optional)COMMENT
LOWpackages/connectors/connector-google/README.md162## Step 8: Test and publish your appCOMMENT
LOWpackages/connectors/connector-facebook/README.md27## Step 1: Set up an app on Facebook App DashboardCOMMENT
LOWpackages/connectors/connector-facebook/README.md39## Step 2: Set up Logto connector with client credentialsCOMMENT
LOWpackages/connectors/connector-facebook/README.md49## Step 3: Configure scopesCOMMENT
LOWpackages/connectors/connector-facebook/README.md83## Step 4: General settingsCOMMENT
LOWpackages/connectors/connector-facebook/README.md103## Step 5: Test sign-in with Facebook's test users (Optional)COMMENT
LOWpackages/connectors/connector-facebook/README.md111## Step 6: Publish Facebook sign-in settingsCOMMENT
LOWpackages/connectors/connector-github/README.md27## Step 1: Create an OAuth app on GitHubCOMMENT
LOWpackages/connectors/connector-github/README.md46## Step 2: Configure your Logto connectorCOMMENT
LOWpackages/connectors/connector-github/README.md56## Step 3: Configure scopes (Optional)COMMENT
LOWpackages/connectors/connector-github/README.md88## Step 4: General settingsCOMMENT
LOWpackages/connectors/connector-github/README.md112## Step 5: Test your integration (Optional)COMMENT
LOWpackages/core/src/utils/sha-crypt.ts218 // Step 21: the rounds. A plain loop: `rounds` may be large, so no array of that length is built.COMMENT
LOW…rience/identifier-first-verification-switching.test.ts207 // Step 1: Setup for user registration (without passkeySignIn enabled)COMMENT
LOW…rience/identifier-first-verification-switching.test.ts230 // Step 2: Enable passkeySignIn for sign-in testingCOMMENT
LOW…rience/identifier-first-verification-switching.test.ts306 // Step 1: Setup for user registration (without passkeySignIn enabled)COMMENT
LOW…rience/identifier-first-verification-switching.test.ts328 // Step 2: Enable passkeySignIn and clear MFA for sign-in testingCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts292 // Step 2: Add TOTP MFA to the user via admin API, so the user has mandatory TOTP MFACOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts295 // Step 3: Enable mandatory TOTP MFA and passkey sign-inCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts388 // Step 2: Set username and password for the SSO user via admin APICOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts392 // Step 3: Enable mandatory WebAuthn MFA so the user can bind a passkeyCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts395 // Step 4: Sign in with username/password to bind a passkey during MFA stepCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts411 // Step 5: Disable MFA requirement and enable passkey sign-inCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts421 // Step 6: Attempt passkey sign-in — should be blocked for SSO usersCOMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts281 // Step 1: Register a user with passkey (WebAuthn MFA binding during registration)COMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts308 // Step 4: Sign in using the passkey sign-in buttonCOMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts319 // Step 5: Verify the user is signed in successfully without MFA verification promptCOMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts377 // Step 1: Register a user via SSO (creates SSO identity)COMMENT
LOWpackages/account/src/pages/PasskeyBinding/index.tsx104 // Step 1: Call WebAuthn browser API synchronously after click (required for iOS Safari)COMMENT
LOWpackages/account/src/pages/PasskeyBinding/index.tsx142 // Step 2: Verify registration with serverCOMMENT
LOWpackages/account/src/pages/PasskeyBinding/index.tsx157 // Step 3: Show naming step instead of directly adding the MFACOMMENT
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippetContext
CRITICALpackages/core/src/libraries/organization-invitation.ts72 if (await this.queries.organizations.relations.users.isMember(organizationId, invitee)) {CODE
CRITICALpackages/core/src/libraries/jwt-customizer.ts138 await this.queries.organizations.relations.users.getOrganizationsByUserId(userId);CODE
CRITICALpackages/core/src/routes/experience/classes/mfa.ts771 (await this.queries.organizations.relations.users.getOrganizationsByUserId(user.id));CODE
CRITICALpackages/core/src/routes/experience/classes/mfa.ts796 ? this.queries.organizations.relations.users.getOrganizationsByUserId(user.id)CODE
Verbosity Indicators20 hits · 34 pts
SeverityFileLineSnippetContext
LOWpackages/core/src/utils/sha-crypt.ts218 // Step 21: the rounds. A plain loop: `rounds` may be large, so no array of that length is built.COMMENT
LOWpackages/core/src/routes/authn.ts209 // IdP initiated SSO does not provide the RelayState, we need to check if the IdP initiated SSO flow is enabled.COMMENT
LOW…rience/identifier-first-verification-switching.test.ts207 // Step 1: Setup for user registration (without passkeySignIn enabled)COMMENT
LOW…rience/identifier-first-verification-switching.test.ts230 // Step 2: Enable passkeySignIn for sign-in testingCOMMENT
LOW…rience/identifier-first-verification-switching.test.ts306 // Step 1: Setup for user registration (without passkeySignIn enabled)COMMENT
LOW…rience/identifier-first-verification-switching.test.ts328 // Step 2: Enable passkeySignIn and clear MFA for sign-in testingCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts292 // Step 2: Add TOTP MFA to the user via admin API, so the user has mandatory TOTP MFACOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts295 // Step 3: Enable mandatory TOTP MFA and passkey sign-inCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts388 // Step 2: Set username and password for the SSO user via admin APICOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts392 // Step 3: Enable mandatory WebAuthn MFA so the user can bind a passkeyCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts395 // Step 4: Sign in with username/password to bind a passkey during MFA stepCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts411 // Step 5: Disable MFA requirement and enable passkey sign-inCOMMENT
LOW⚡…-tests/src/tests/experience/mfa/webauthn/index.test.ts421 // Step 6: Attempt passkey sign-in — should be blocked for SSO usersCOMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts281 // Step 1: Register a user with passkey (WebAuthn MFA binding during registration)COMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts308 // Step 4: Sign in using the passkey sign-in buttonCOMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts319 // Step 5: Verify the user is signed in successfully without MFA verification promptCOMMENT
LOW…-tests/src/tests/experience/mfa/webauthn/index.test.ts377 // Step 1: Register a user via SSO (creates SSO identity)COMMENT
LOWpackages/account/src/pages/PasskeyBinding/index.tsx104 // Step 1: Call WebAuthn browser API synchronously after click (required for iOS Safari)COMMENT
LOWpackages/account/src/pages/PasskeyBinding/index.tsx142 // Step 2: Verify registration with serverCOMMENT
LOWpackages/account/src/pages/PasskeyBinding/index.tsx157 // Step 3: Show naming step instead of directly adding the MFACOMMENT
AI Slop Vocabulary7 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMdocker-compose.yml27 # Or, you can leverage it for local testing.COMMENT
MEDIUMpackages/core/src/middleware/koa-experience-ssr.test.ts224 // escaped form (rather than counting `</script>` occurrences) is robust to the served template addingCOMMENT
MEDIUMpackages/core/src/queries/logto-config.ts208 // Can not narrow down the type of value if we utilize `buildInsertIntoWithPool` method.COMMENT
MEDIUMpackages/core/src/libraries/logto-config.ts101 // Can not narrow down the type of value if we utilize `buildInsertIntoWithPool` method.COMMENT
MEDIUMpackages/core/src/caches/base-cache.ts101 // We don't leverage `finally` here since we want to ensure cache invalidationCOMMENT
MEDIUMpackages/shared/src/esm/mock-esm.ts72 // Remove this when we upgrade Node.js to v19+ since we can leverage `import.meta.resolve()` to manually resolve a mCOMMENT
MEDIUMpackages/toolkit/connector-kit/src/types/social.ts90 // Accept arbitrary unspecified keys so developers who can not publish @logto/connector-kit can more flexibly utilize COMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMpackages/core/src/middleware/koa-audit-log.ts116 * #### Create a log entryCOMMENT
MEDIUM…/pages/Security/Captcha/CreateCaptchaForm/constants.ts87## Create a site keyCOMMENT
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippetContext
LOWpackages/core/src/include.d/koa-router.d.ts1/* eslint-disable max-lines */COMMENT
LOW.github/workflows/codeql-analysis.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOW.github/workflows/codeql-analysis.yml61 COMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM…src/locales/en/translation/admin-console/connectors.ts14 'The demo connector is designed exclusively for demonstration purposes and is not recommended for deployment in a prCODE