@@ -132,6 +132,22 @@ describe("CL-7789 default-install credential surface", () => {
132132 expect (
133133 isSensitivePathResolved ( join ( home , ".corbits" , "codex-auth.json.lock" ) ) ,
134134 ) . toBe ( true ) ;
135+ for ( const basename of [
136+ "settings.json" ,
137+ "permissions.json" ,
138+ "codex-auth.json" ,
139+ "xai-auth.json" ,
140+ ] ) {
141+ expect (
142+ isSensitivePathResolved ( join ( home , ".corbits" , `${ basename } ~` ) ) ,
143+ ) . toBe ( true ) ;
144+ expect (
145+ isSensitivePathResolved ( join ( home , ".corbits" , `${ basename } .swp` ) ) ,
146+ ) . toBe ( true ) ;
147+ expect (
148+ isSensitivePathResolved ( join ( home , ".corbits" , `.${ basename } .swp` ) ) ,
149+ ) . toBe ( true ) ;
150+ }
135151 expect (
136152 isSensitivePathResolved (
137153 join ( home , ".corbits" , "xai-auth.json.12345.1.tmp" ) ,
@@ -157,6 +173,21 @@ describe("CL-7789 default-install credential surface", () => {
157173 }
158174 } ) ;
159175
176+ test ( "@mentions of credential backup paths stay blocked without leaking bytes" , async ( ) => {
177+ const fake = await fakeHome ( ) ;
178+ const cwd = await mkdtemp ( join ( tmpdir ( ) , "cl7789-mention-bak-cwd-" ) ) ;
179+ try {
180+ const backup = `${ fake . codexAuth } .bak-2026-01-01` ;
181+ await writeFile ( backup , `${ CODEX_BYTES } \n` ) ;
182+ const resolved = await resolveAtMentions ( `read @${ backup } ` , cwd ) ;
183+ expect ( resolved ) . toContain ( "(blocked: sensitive path)" ) ;
184+ expect ( resolved ) . not . toContain ( "CODEX-FIXTURE-ACCESS" ) ;
185+ } finally {
186+ await fake . cleanup ( ) ;
187+ await rm ( cwd , { recursive : true , force : true } ) ;
188+ }
189+ } ) ;
190+
160191 test ( "a symlink to a credential file is blocked by mention and by read" , async ( ) => {
161192 const fake = await fakeHome ( ) ;
162193 const cwd = await mkdtemp ( join ( tmpdir ( ) , "cl7789-symlink-cwd-" ) ) ;
0 commit comments