> ISPO SDK documentation. [HTML](https://ispo.ai/docs/variables/core.git.html) · [Documentation index](https://ispo.ai/docs/llms.txt)

# Variable git`Const`

```typescript
git: {
    external: {
        diffFile: (
            slotId: string,
            path: string,
        ) => Promise<ExternalGitDiffResult>;
        log: (
            slotId: string,
            limit: number,
            cursorSha?: string,
        ) => Promise<ExternalGitLogResult>;
        show: (slotId: string, sha: string) => Promise<ExternalGitChangedFile[]>;
        status: (slotId: string) => Promise<ExternalGitChangedFile[]>;
    };
    commit(input: GitCommitInput): Promise<GitCommitResult>;
    diff(input: GitDiffInput): Promise<GitDiffResult>;
    status(input: GitStatusInput): Promise<GitStatusResult>;
} = ...
```

Types: [ExternalGitDiffResult](../interfaces/core.ExternalGitDiffResult.md), [ExternalGitLogResult](../interfaces/core.ExternalGitLogResult.md), [ExternalGitChangedFile](../interfaces/core.ExternalGitChangedFile.md), [GitCommitInput](../interfaces/core.GitCommitInput.md), [GitCommitResult](../interfaces/core.GitCommitResult.md), [GitDiffInput](../interfaces/core.GitDiffInput.md), [GitDiffResult](../interfaces/core.GitDiffResult.md), [GitStatusInput](../interfaces/core.GitStatusInput.md), [GitStatusResult](../interfaces/core.GitStatusResult.md)

Read-only git over a bound folder slot. This is NOT a second permission: it rides the same slot binding as `fs.external.*` and can only reach bytes `fs.external.readText` could already read (spec §7.8). Git runs host-side with neutralized arguments, so there is no shell, no config injection, and no stage/commit/restore/stash lane on this surface.

A slot does not have to be a repository toplevel. If the bound directory sits inside a larger repository the host filters everything by the slot, so you never see a file — or a commit — from outside what the user picked, and you never see the repository's absolute location or its internal offset.

#### Type Declaration

*   ##### <a id="external"></a>external: {  
        diffFile: (  
            slotId: string,  
            path: string,  
        ) \=> Promise<[ExternalGitDiffResult](../interfaces/core.ExternalGitDiffResult.md)\>;  
        log: (  
            slotId: string,  
            limit: number,  
            cursorSha?: string,  
        ) \=> Promise<[ExternalGitLogResult](../interfaces/core.ExternalGitLogResult.md)\>;  
        show: (slotId: string, sha: string) \=> Promise<[ExternalGitChangedFile](../interfaces/core.ExternalGitChangedFile.md)\[\]\>;  
        status: (slotId: string) \=> Promise<[ExternalGitChangedFile](../interfaces/core.ExternalGitChangedFile.md)\[\]\>;  
    }
    
*   ##### <a id="commit"></a>commit: function
    
    *   <a id="commit-1"></a>
        
        ```typescript
        commit(input: GitCommitInput): Promise<GitCommitResult>
        ```
        
        Types: [GitCommitInput](../interfaces/core.GitCommitInput.md), [GitCommitResult](../interfaces/core.GitCommitResult.md)
        
        #### Parameters
        
        *   input: [GitCommitInput](../interfaces/core.GitCommitInput.md)
        
        #### Returns Promise<[GitCommitResult](../interfaces/core.GitCommitResult.md)\>
        
*   ##### <a id="diff"></a>diff: function
    
    *   <a id="diff-1"></a>
        
        ```typescript
        diff(input: GitDiffInput): Promise<GitDiffResult>
        ```
        
        Types: [GitDiffInput](../interfaces/core.GitDiffInput.md), [GitDiffResult](../interfaces/core.GitDiffResult.md)
        
        #### Parameters
        
        *   input: [GitDiffInput](../interfaces/core.GitDiffInput.md)
        
        #### Returns Promise<[GitDiffResult](../interfaces/core.GitDiffResult.md)\>
        
*   ##### <a id="status"></a>status: function
    
    *   <a id="status-1"></a>
        
        ```typescript
        status(input: GitStatusInput): Promise<GitStatusResult>
        ```
        
        Types: [GitStatusInput](../interfaces/core.GitStatusInput.md), [GitStatusResult](../interfaces/core.GitStatusResult.md)
        
        #### Parameters
        
        *   input: [GitStatusInput](../interfaces/core.GitStatusInput.md)
        
        #### Returns Promise<[GitStatusResult](../interfaces/core.GitStatusResult.md)\>
