From 0cfdc73eaf8218cdb416cc4068039cfdf6bd5ea4 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 23 Apr 2026 12:42:50 +0000 Subject: [PATCH 1/2] feat: forbid AGENTS.md and llms-full.txt usernames Prevent these special filenames from being registered as usernames, since they are served at apify.com/ and would conflict with AI agent discovery files. --- packages/utilities/src/utilities.ts | 1 + test/utilities.test.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/packages/utilities/src/utilities.ts b/packages/utilities/src/utilities.ts index da7caa4d..15133a72 100644 --- a/packages/utilities/src/utilities.ts +++ b/packages/utilities/src/utilities.ts @@ -271,6 +271,7 @@ const FORBIDDEN_USERNAMES_REGEXPS = [ // Special files 'index', 'index\\.html', '(favicon\\.[a-z]+)', 'BingSiteAuth.xml', '(google.+\\.html)', 'robots\\.txt', '(sitemap\\.[a-z]+)', '(apple-touch-icon.*)', 'security-whitepaper\\.pdf', 'security\\.txt', 'llms\\.txt', + 'llms-full\\.txt', 'AGENTS\\.md', // All hidden files '(\\..*)', diff --git a/test/utilities.test.ts b/test/utilities.test.ts index 030952d1..5fb1ad1b 100644 --- a/test/utilities.test.ts +++ b/test/utilities.test.ts @@ -74,6 +74,10 @@ describe('utilities', () => { expect(utils.isForbiddenUsername('index')).toBe(true); expect(utils.isForbiddenUsername('google6d0b9d7407741f6a.html')).toBe(true); expect(utils.isForbiddenUsername('BingSiteAuth.XML')).toBe(true); + expect(utils.isForbiddenUsername('llms.txt')).toBe(true); + expect(utils.isForbiddenUsername('llms-full.txt')).toBe(true); + expect(utils.isForbiddenUsername('AGENTS.md')).toBe(true); + expect(utils.isForbiddenUsername('agents.MD')).toBe(true); // All hidden files expect(utils.isForbiddenUsername('.hidden')).toBe(true); From 91664b2c51675029f6b7847445dd11f5915a630a Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 23 Apr 2026 12:59:30 +0000 Subject: [PATCH 2/2] test: cover .well-known in forbidden username tests The existing hidden-files pattern already blocks .well-known; add an explicit assertion so the behavior is locked in. --- test/utilities.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/utilities.test.ts b/test/utilities.test.ts index 5fb1ad1b..255f6590 100644 --- a/test/utilities.test.ts +++ b/test/utilities.test.ts @@ -86,6 +86,7 @@ describe('utilities', () => { expect(utils.isForbiddenUsername('..')).toBe(true); expect(utils.isForbiddenUsername('...')).toBe(true); expect(utils.isForbiddenUsername('.htaccess')).toBe(true); + expect(utils.isForbiddenUsername('.well-known')).toBe(true); // Strings not starting with letter or number expect(utils.isForbiddenUsername('_karlyolo')).toBe(true);