diff --git a/src/gptscript.ts b/src/gptscript.ts
index 14695e7..431e48d 100644
--- a/src/gptscript.ts
+++ b/src/gptscript.ts
@@ -473,10 +473,11 @@ export class GPTScript {
         return out.trim()
     }
 
-    async deleteWorkspace(workspaceID?: string): Promise<void> {
+    async deleteWorkspace(workspaceID: string): Promise<void> {
         if (!workspaceID) {
-            workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
+            return Promise.reject("workspace ID cannot be empty")
         }
+
         await this.runBasicCommand("workspaces/delete", {
             id: workspaceID,
             workspaceTool: this.opts.WorkspaceTool,
@@ -547,6 +548,20 @@ export class GPTScript {
         return Buffer.from(out.trim(), "base64")
     }
 
+    async statFileInWorkspace(filePath: string, workspaceID?: string): Promise<FileInfo> {
+        if (!workspaceID) {
+            workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
+        }
+        const out = await this.runBasicCommand("workspaces/stat-file", {
+            id: workspaceID,
+            filePath: filePath,
+            workspaceTool: this.opts.WorkspaceTool,
+            env: this.opts.Env,
+        })
+
+        return JSON.parse(out)
+    }
+
     /**
      * Helper method to handle the common logic for loading.
      *
@@ -589,6 +604,13 @@ export class GPTScript {
     }
 }
 
+export interface FileInfo {
+    workspaceID: string
+    name: string
+    size: number
+    modTime: string
+}
+
 export class Run {
     public readonly id: string
     public readonly opts: RunOpts
diff --git a/tests/gptscript.test.ts b/tests/gptscript.test.ts
index b0ac6bd..4ac834c 100644
--- a/tests/gptscript.test.ts
+++ b/tests/gptscript.test.ts
@@ -977,6 +977,14 @@ describe("gptscript module", () => {
         await g.writeFileInWorkspace("test.txt", Buffer.from("test"), workspaceID)
         const content = await g.readFileInWorkspace("test.txt", workspaceID)
         expect(content.toString()).toEqual("test")
+
+        const fileInfo = await g.statFileInWorkspace("test.txt", workspaceID)
+        expect(fileInfo.size).toEqual(4)
+        expect(fileInfo.name).toEqual("test.txt")
+        expect(fileInfo.workspaceID).toEqual(workspaceID)
+        expect(fileInfo.modTime).toBeDefined()
+
+        await g.deleteFileInWorkspace("test.txt", workspaceID)
         await g.deleteWorkspace(workspaceID)
     }, 60000)
 
@@ -1034,6 +1042,14 @@ describe("gptscript module", () => {
         await g.writeFileInWorkspace("test.txt", Buffer.from("test"), workspaceID)
         const content = await g.readFileInWorkspace("test.txt", workspaceID)
         expect(content.toString()).toEqual("test")
+
+        const fileInfo = await g.statFileInWorkspace("test.txt", workspaceID)
+        expect(fileInfo.size).toEqual(4)
+        expect(fileInfo.name).toEqual("test.txt")
+        expect(fileInfo.workspaceID).toEqual(workspaceID)
+        expect(fileInfo.modTime).toBeDefined()
+
+        await g.deleteFileInWorkspace("test.txt", workspaceID)
         await g.deleteWorkspace(workspaceID)
     }, 60000)