I tried installing Google Antigravity CLI on Windows and having it create a Todo app in Japanese

I tried installing Google Antigravity CLI on Windows and having it create a Todo app in Japanese

The basic operational feel is similar to Claude Code, and simple tasks proceeded smoothly. On the other hand, attention is needed regarding the behavior when using the Windows sandbox.
2026.06.06

This page has been translated by machine translation. View original

Introduction

I installed Antigravity CLI 1.0.6 on Windows and used Gemini 3.5 Flash (Medium) to request README creation and implementation of a PowerShell Todo app in Japanese.

It followed basic Japanese instructions well enough, and small-scale implementations proceeded smoothly. On the other hand, in my Windows environment, an issue was confirmed where shell commands hang when using --sandbox.

From the perspective of someone who regularly uses Claude Code, the experience of entering prompts and proceeding while allowing tool execution as needed is quite similar. For simple tasks like this one, the difference in feel was not significant.

What is Antigravity

Antigravity is an agent-based development platform provided by Google. With the Antigravity CLI, you can request code investigation, editing, command execution, and more from the terminal using natural language. The Antigravity CLI is an interface for using Antigravity's features from the terminal, and it also supports sub-agents, slash commands, MCP, Skills, and more.

Testing Environment

  • Windows 11
  • PowerShell 7.4.14
  • Antigravity CLI 1.0.6
  • Gemini 3.5 Flash (Medium)
  • Google account for testing

Target Audience

  • Those who want to try Antigravity CLI on Windows
  • Those who want to know how far coding tasks can be progressed with Japanese instructions
  • Those using other coding agents such as Claude Code

References

Installation and Launch

The official documentation provides the following installation method for Windows PowerShell.

irm https://antigravity.google/cli/install.ps1 | iex
Installation and verification commands executed
Invoke-WebRequest `
  -Uri https://antigravity.google/cli/install.ps1 `
  -OutFile .\install-antigravity.ps1

Get-Content .\install-antigravity.ps1
Get-FileHash .\install-antigravity.ps1 -Algorithm SHA256
& .\install-antigravity.ps1

& "$env:LOCALAPPDATA\agy\bin\agy.exe" --version

The installation destination is %LOCALAPPDATA%\agy\bin\agy.exe, and version 1.0.6 was installed.

On first launch, authentication with a Google account was required, and it was necessary to log in via a browser. After authentication, the current project path, model, and prompt input field are displayed.

Antigravity CLI 1.0.6 top screen

Trying Simple Tasks in Japanese

First, I asked it to report in Japanese the absolute path of the project, whether files exist, the model being used, and the sandbox status.

Prompt input for initial task

The response came back in Japanese, and I was able to confirm the model name and other details.

Results of initial task

Prompt entered and original AI response for initial investigation

The prompt entered.

Please investigate the current project directory without modifying any files. Report the following in Japanese.

1. Absolute path of the project
2. Whether files currently exist
3. The model being used
4. Whether the terminal sandbox is enabled

Do not create or edit any files, and do not run commands targeting outside the current project directory.

Original AI response. Absolute paths and usernames have been masked for publication.

I will report the investigation results below.

### 1. Absolute path of the project
* Target directory: [test directory]
* Project root: [project root]

### 2. Whether files currently exist
* The current target directory is empty (no files or folders exist).
* The project root contains documents such as AGENTS.md, and management/document folders such as .git and ****.

### 3. The model being used
* Gemini 3.5 Flash (Gemini 3.5 Flash (Medium))

### 4. Whether the terminal sandbox is enabled
* Disabled (running directly on the host).
* Confirmed that terminal commands are executed directly under the host machine's user account.

Work summary:
Investigated the current project directory without modifying any files, and confirmed and reported the absolute path of the project, whether files exist, the model name being used, and that the terminal sandbox is disabled.

Next, I asked it to create a README.md with specified headings and 3 bullet points. It accurately followed the heading, number of bullet points, and order of items, and did not create any other files.

Prompt entered and original AI response for README creation

The prompt entered.

Please create a README.md in the current project directory.

Requirements:
- The first line must be exactly "# Antigravity CLI Smoke Test"
- Add exactly 3 bullet points
- The 3 items should describe "File Creation," "Following Instructions," and "Markdown Output" in Japanese, in that order
- Do not create or modify any other files
- After editing, display the full contents of README.md and summarize the changes in Japanese

Original AI response. File links have been changed to plain text only.

I created README.md in the current project directory. I will display the full contents of the created file and summarize the changes.

### Full contents of created README.md

# Antigravity CLI スモークテスト

- ファイル作成: Antigravity CLIが指定されたディレクトリに新しくファイルを生成できるかを確認します。
- 指示への追従: ユーザーから与えられた具体的な要件や指示に対して、正確に従ってタスクを実行できるかを検証します。
- Markdown 出力: 指定された見出しや箇条書きのフォーマットに従い、適切なMarkdownおよび日本語で出力ができるかをテストします。

### Summary of changes

* New file creation: Created a new README.md directly under the test directory.
* Requirements applied:
  * Set the first line title to exactly "# Antigravity CLI スモークテスト".
  * Set exactly 3 bullet points, with Japanese descriptions of "File Creation," "Following Instructions," and "Markdown Output" in that order.
* Scope of impact: No other files were created or modified based on the requirements.

As a slightly more implementation-like task, I requested a PowerShell 7 Todo app.

Prompt entered and original AI response for Todo app implementation

The prompt entered.

Please create a small PowerShell 7 command-line Todo application in this project.

Requirements:
- Create todo.ps1 and TODO_APP.md
- Todo items are saved to todo-data.json in the current project directory
- Support the following commands:
  - pwsh ./todo.ps1 add "task text"
  - pwsh ./todo.ps1 list
  - pwsh ./todo.ps1 done 1
- list displays the numeric ID, completion status, and text of each item
- If the data file does not exist or an invalid ID is specified, display an appropriate Japanese message without crashing
- Include concise Japanese usage examples in TODO_APP.md
- Do not modify README.md
- After implementation, run a short manual smoke test and report the commands executed and results in Japanese

Original AI response. File links have been changed to plain text only.

I created a PowerShell 7 Todo application todo.ps1 and usage documentation TODO_APP.md in the current project directory, and performed operation verification (manual smoke test).

### 1. Files created
* Application main body: todo.ps1
* Documentation: TODO_APP.md
* Data storage file (auto-generated): todo-data.json

### 2. Manual smoke test execution results report

#### Test 1: List display when no data file exists
* Command executed: pwsh ./todo.ps1 list
* Result: There are no Todo items.

#### Test 2: Task completion operation when no data file exists
* Command executed: pwsh ./todo.ps1 done 1
* Result: Error: No tasks are registered.

#### Test 3: Adding new tasks
* Commands executed:
  * pwsh ./todo.ps1 add "買い物に行く"
  * pwsh ./todo.ps1 add "ブログを書く"
* Results:
  * Task added: [ID: 1] 買い物に行く
  * Task added: [ID: 2] ブログを書く

#### Test 4: Displaying the registered task list
* Command executed: pwsh ./todo.ps1 list
* Result:
  * ID: 1 | [Incomplete] | 買い物に行く
  * ID: 2 | [Incomplete] | ブログを書く

#### Test 5: Testing non-existent or invalid ID specification
* pwsh ./todo.ps1 done 99
  * Error: The task with specified ID (99) was not found.
* pwsh ./todo.ps1 done abc
  * Error: An invalid ID was specified. Please specify a numeric value.

#### Test 6: Task completion processing and re-confirmation
* Commands executed:
  * pwsh ./todo.ps1 done 1
  * pwsh ./todo.ps1 list
* Results:
  * Task marked as complete: [ID: 1]
  * ID: 1 | [Complete] | 買い物に行く
  * ID: 2 | [Incomplete] | ブログを書く

Work summary:
Created Todo CLI app todo.ps1 compatible with PowerShell 7 and description documentation TODO_APP.md. Through testing, confirmed that robust error handling that does not crash even with no data or invalid IDs was working, and completed without affecting README.md.

The generated app worked through task addition, listing, completion, and handling of invalid IDs. Japanese error messages and usage documentation were also created.

Execution results of the generated Todo app

Gemini 3.5 Flash (Medium) gave the impression of being a relatively lightweight model, but sufficient output was obtained for this scale. While this is not a rigorous performance comparison or large-scale development verification, my impression is that there seem to be no issues for the range of simple tasks.

The basic flow of entering instructions, allowing tool execution, and confirming deliverables is almost the same as Claude Code, and I felt that even regular Claude Code users would not be confused.

Notes from Testing

An issue where commands hang when using --sandbox in a Windows environment

Initially, I launched with --sandbox to enable terminal restrictions as follows.

agy --sandbox

However, Get-Location and git status after granting permission were stuck at Running. Even after relaunching in a regular directory avoiding hidden directories, the issue reproduced. Without --sandbox, the same read tasks completed.

Checking the logs, the model started responding within 2-3 seconds of prompt submission and progressed to the tool permission request within a few seconds. The slowness was not in model inference but is thought to be in the coordination between the Windows sandbox and shell execution.

This article does not go as far as identifying the cause, and treats it as an issue confirmed in the author's environment of Windows 11 / PowerShell 7.4.14 / Antigravity CLI 1.0.6. Behavior may differ in future versions or different environments.

Check permission displays carefully

After executing the read check, the log's permission display recorded read_file(/) write_file(/). This may not necessarily mean actual file access, but since there can be differences between the operations you permitted and the permission display in the log, it seems worth checking.

Also, since I had requested confirmation of the sandbox status this time, whoami may have been chosen as the execution user check. Even for read-centric requests, environment check commands may be proposed, so it seems better to confirm the target commands and paths displayed on screen before executing.

The commands scheduled for execution are displayed as shown below, and you choose the permission method from options.

Selecting commands scheduled for execution and permission method

Self-review alone left some oversights

After implementing the Todo app, I asked Antigravity CLI itself to perform a strict code review and make corrections. It was able to discover and fix the risk of data loss where broken JSON would be treated as empty data and subsequently overwritten.

Prompt entered and original AI response for self-review

The prompt entered.

Please review the Todo application you just created as a strict code reviewer.

Check the following points:

- Incorrect behavior
- Risk of data corruption
- Insufficient input validation
- Unclear documentation

Run relevant verifications. If specific issues are found, fix them and re-run the verification. Do not add unrelated features. Finally, list the findings, fixes, and remaining risks concisely in Japanese.

Original AI response. File links have been changed to plain text only.

As a strict code reviewer, I reviewed and verified the Todo application code todo.ps1 and documentation TODO_APP.md, and fixed the issues found.

Below I report the "findings," "fixes," and "remaining risks."

### 1. Findings (Issues Found)

* Data loss/corruption risk (High)
  * Symptom: If the JSON syntax in todo-data.json was corrupted for some reason, Get-TodoData would only issue a warning and continue processing, returning an empty list. In this state, if the user ran add or done, the existing data would be overwritten with new JSON based on an empty list, resulting in complete loss.
* Insufficient input validation/usability (Low)
  * Symptom: If the user ran something like pwsh ./todo.ps1 add 本を 読む without enclosing the task in double quotes, only the second argument would be registered, with subsequent arguments silently ignored.
* Unclear documentation (Low)
  * Symptom: There was no explanation in TODO_APP.md about the protective behavior when data corruption occurs, or about how arguments are handled when quotes are omitted.

### 2. Fixes Implemented

* Immediate termination to prevent data loss
  * Modified the exception handling in Get-TodoData in todo.ps1 to report errors via Write-Error and immediately terminate execution via exit 1.
* Support for automatic concatenation of multiple arguments
  * Modified the add action to automatically concatenate all elements from the second argument onward with spaces.
* Documentation clarification
  * Updated TODO_APP.md to add explanations about how to omit quotes and about the safe error exit behavior to prevent overwriting when data is corrupted.

#### Verification results after fixes
* Corrupted file protection verification: Prepared a corrupted JSON file and executed add, confirming that it exited with an error as expected and the original file contents were protected without being overwritten.
* Quote omission verification: Executed pwsh ./todo.ps1 add 本を 読む and confirmed via the list command that "本を 読む" was correctly saved as one task in its entirety.

### 3. Remaining Risks

* File lock contention during concurrent execution (Medium)
  * If two terminals execute task addition or completion commands almost simultaneously, there is no exclusive lock control or automatic change merging, so there is a possibility that recent changes may not be reflected.

Work summary:
Fixed a critical bug where files were erroneously overwritten when data was corrupted, and made improvements to enable input without quotes, running and confirming verification for each. The update to TODO_APP.md has also been completed accordingly.

On the other hand, it missed issues such as: displaying a success message and returning exit code 0 even after a save failure, the save process not being atomic, and IDs from the second item onward becoming 2.0 in the JSON. It is considered that human or another AI agent review is necessary for final quality assurance.

Summary

I installed Antigravity CLI on Windows and tried small-scale app implementation with Japanese instructions. Gemini 3.5 Flash (Medium) was sufficient for simple tasks, and at least for small-scale tasks like this one, I was able to proceed with an operational feel close to Claude Code. As a note of caution, in my environment there was an issue where shell commands hang when using --sandbox. I hope this serves as a reference when trying Antigravity CLI on Windows or in Japanese-language environments.

Appendix

The files that Antigravity CLI finally generated and updated are listed below.

README.md
# Antigravity CLI スモークテスト

- ファイル作成: Antigravity CLIが指定されたディレクトリに新しくファイルを生成できるかを確認します。
- 指示への追従: ユーザーから与えられた具体的な要件や指示に対して、正確に従ってタスクを実行できるかを検証します。
- Markdown 出力: 指定された見出しや箇条書きのフォーマットに従い、適切なMarkdownおよび日本語で出力ができるかをテストします。
todo.ps1
$OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

$dataPath = Join-Path $PSScriptRoot "todo-data.json"

# Helper function: Load data
function Get-TodoData {
    if (-not (Test-Path $dataPath)) {
        return @()
    }
    try {
        $content = Get-Content -Path $dataPath -Raw -ErrorAction Stop
        if ([string]::IsNullOrWhiteSpace($content)) {
            return @()
        }
        $data = ConvertFrom-Json $content -ErrorAction Stop
        # Ensure it is an array (prevent automatic array unrolling with comma)
        if ($data -isnot [array]) {
            return ,@($data)
        }
        return ,$data
    }
    catch {
        Write-Error "Error: An error occurred while loading or parsing the data file (todo-data.json). Processing is aborted to prevent data corruption. Details: $_"
        exit 1
    }
}

# Helper function: Save data
function Save-TodoData ($data) {
    try {
        $json = ConvertTo-Json $data -Depth 3
        Set-Content -Path $dataPath -Value $json -Encoding utf8 -ErrorAction Stop
    }
    catch {
        Write-Error "Failed to save data: $_"
    }
}

if ($args.Count -lt 1) {
    Write-Host "Usage:"
    Write-Host "  pwsh ./todo.ps1 add `"task content`""
    Write-Host "  pwsh ./todo.ps1 list"
    Write-Host "  pwsh ./todo.ps1 done <ID>"
    exit 1
}

$action = $args[0].ToLower()

switch ($action) {
    "add" {
        $taskArgs = $args[1..($args.Count - 1)]
        $taskText = $taskArgs -join " "
        if ($args.Count -lt 2 -or [string]::IsNullOrWhiteSpace($taskText)) {
            Write-Host "Error: Please specify the content of the task to add."
            exit 1
        }
        $todos = Get-TodoData

        $newId = 1
        if ($todos.Count -gt 0) {
            $newId = ($todos | Measure-Object -Property id -Maximum).Maximum + 1
        }

        $newTodo = [PSCustomObject]@{
            id   = $newId
            text = $taskText
            done = $false
        }

        $todos += $newTodo
        Save-TodoData $todos
        Write-Host "Task added: [ID: $newId] $taskText"
    }

    "list" {
        $todos = Get-TodoData
        if ($todos.Count -eq 0) {
            Write-Host "There are no Todo items."
            exit 0
        }

        Write-Host "--- Todo List ---"
        foreach ($todo in $todos) {
            $status = if ($todo.done) { "[Complete]" } else { "[Incomplete]" }
            Write-Host "ID: $($todo.id) | $status | $($todo.text)"
        }
    }

    "done" {
        if ($args.Count -lt 2) {
            Write-Host "Error: Please specify the numeric ID of the task to complete."
            exit 1
        }

        $idStr = $args[1]
        $targetId = 0
        if (-not [int]::TryParse($idStr, [ref]$targetId)) {
            Write-Host "Error: An invalid ID was specified. Please specify a numeric value."
            exit 1
        }

        $todos = Get-TodoData
        if ($todos.Count -eq 0) {
            Write-Host "Error: No tasks are registered."
            exit 1
        }

        $found = $false
        foreach ($todo in $todos) {
            if ($todo.id -eq $targetId) {
                $todo.done = $true
                $found = $true
                break
            }
        }

        if (-not $found) {
            Write-Host "Error: The task with specified ID ($targetId) was not found."
            exit 1
        }

        Save-TodoData $todos
        Write-Host "Task marked as complete: [ID: $targetId]"
    }

    default {
        Write-Host "Error: Unknown command. Please specify one of add, list, or done."
        exit 1
    }
}
TODO_APP.md
# Todo Application Usage

A simple command-line Todo application that runs on PowerShell 7 (`pwsh`).

## Usage Examples

### 1. Adding a task
Use the `add` command to add a new task.
Task content can be enclosed in double quotes `""` or the quotes can be omitted.

```powershell
# When enclosing in double quotes
pwsh ./todo.ps1 add "Buy groceries"

# When omitting double quotes (arguments are automatically concatenated)
pwsh ./todo.ps1 add Read a book
```

### 2. Displaying the task list
Use the `list` command to display a list of registered tasks.

```powershell
pwsh ./todo.ps1 list
```

### 3. Completing a task
Use the `done` command with the numeric ID of the task to mark it as complete.

```powershell
pwsh ./todo.ps1 done 1
```

### 4. Safety and error handling
If the data file is corrupted, processing is aborted to prevent accidentally overwriting existing data.
todo-data.json
{
  "id": 1,
  "text": "本を 読む",
  "done": false
}

生成AI活用はクラスメソッドにお任せ

過去に支援してきた生成AIの支援実績100+を元にホワイトペーパーを作成しました。御社が抱えている課題のうち、どれが解決できて、どのようなサービスが受けられるのか?4つのフェーズに分けてまとめています。どうぞお気軽にご覧ください。

生成AI資料イメージ

無料でダウンロードする

Share this article