Skip to content
Report library
Purpose / Other

Firebase Basics Skill Security Audit

What the author says it does (original text)

>-

Independent security check

Do not install or run it yet

Files checked
20
Risks found
5
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
High risk

Every invocation may automatically download and execute an unpinned npm package

Source references: 2
What we found

The instructions mandate `npx -y firebase-tools@latest`. `@latest` does not pin a reviewed version, while `-y` accepts installation automatically; even a version check can therefore download and execute newly published code. When run after login, that code is also in an environment with access to Firebase credentials.

Why this matters

If the upstream package, publishing account, or dependency chain is compromised, code could read local files or session credentials and execute with the user's privileges. The supplied evidence does not show that such a compromise has occurred.

The source supports the risk: it mandates an unpinned `@latest` package with `-y`, while the login step establishes a Firebase identity in the same environment. Later CLI runs may therefore access local login state and authorized projects. There is no evidence that credentials were misused; the risk arises if the commands are run. Users can pin a version and use a low-privilege account or isolated environment.

SKILL.md:82In the instructionsOpen original file
1. **Use npx for CLI commands:** To ensure you always use the latest version of   the Firebase CLI, always prepend commands with `npx -y firebase-tools@latest`   instead of just `firebase`. For example, use   `npx -y firebase-tools@latest --version`. NEVER suggest the naked `firebase`   command as an alternative.1. **Prioritize official knowledge:** For any Firebase-related knowledge,
Show 1 other places
SKILL.md:40In the instructionsOpen original file
1. **Authentication:** Ensure you are logged in to Firebase so that commands   have the correct permissions. Run `npx -y firebase-tools@latest login`. For   environments without a browser (e.g., remote shells), use   `npx -y firebase-tools@latest login --no-localhost`.   - The command should output the current user.   - If you are not logged in, follow the interactive instructions from this     command to authenticate.
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.No risks found
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 3
High risk

A narrow setup task installs a persistent MCP service able to interact directly with Firebase projects

Source references: 5
What we found

The setup guides write a server that automatically runs `firebase-tools@latest mcp` into agent configuration, and describe it as able to interact directly with Firebase projects. This persistent extension is substantially broader than the claimed login, project-selection, and config-download scope.

Why this matters

After the agent restarts, Firebase MCP remains available. If the session is misled, the wrong project is selected, or another prompt is untrusted, the agent could use the authenticated identity for remote actions outside the user's current request. The evidence does not enumerate MCP permissions, so it does not establish that every Firebase operation is available.

The skill claims a narrow scope of login, projects, and config downloads, yet mandates environment setup for the full suite. The Cursor guide adds a persistent user- or project-level MCP server that launches an unpinned Firebase CLI and is described as interacting directly with Firebase projects. The risk begins if the configuration is changed and Cursor restarted. Users can decline MCP installation, use project scope only, and restrict Firebase account permissions.

references/setup/cursor.md:30In the instructionsOpen original file
### 2. Configure and Verify Firebase MCP ServerThe MCP server allows Cursor to interact directly with Firebase projects.1. **Locate `mcp.json`**: Find the configuration file for your operating system:   - Global: `~/.cursor/mcp.json`   - Project: `.cursor/mcp.json`   *Note: If the directory or `mcp.json` file does not exist, create them and   initialize the file with `{ "mcpServers": {} }` before proceeding.*
Show 4 other places
references/setup/cursor.md:68In the instructionsOpen original file
1. **Add or Update Configuration**: If the `firebase` block is missing or   incorrect, add it to the `mcpServers` object:   ```json   "firebase": {     "command": "npx",     "args": [       "-y",       "firebase-tools@latest",       "mcp"     ]   }   ```   *CRITICAL: Merge this configuration into the existing `mcp.json` file. You   MUST preserve any other existing servers inside the `mcpServers` object.*1. **Verify Configuration**: Save the file and confirm the `firebase` block is   present and properly formatted JSON.
references/setup/cursor.md:88In the instructionsOpen original file
### 3. Restart and Verify Connection1. **Restart Cursor**: Instruct the user to restart the Cursor application.   **Stop and wait** for their confirmation before proceeding.1. **Confirm Connection**: Check the MCP server list in the Cursor UI to confirm   that the Firebase MCP server is connected.
SKILL.md:95In the instructionsOpen original file
   instead of relying on general knowledge.1. **Use Firebase MCP Server tools instead of direct API calls:** Whenever you   need to interact with remote Firebase APIs (such as fetching Crashlytics logs   or executing Data Connect queries), use the tools provided by the Firebase   MCP Server instead of attempting manual API calls.1. **Keep Plugin / Agent Skills updated:** Since Firebase best practices evolve
SKILL.md:19In the instructionsOpen original file
   - Verify if the Firebase MCP server is installed using your existing tools.   - **CRITICAL**: Before configuring any extensions or agent environments     below, you MUST read     [references/local-env-setup.md](references/local-env-setup.md).   - **DO NOT SKIP** this step: if 'firebase-basics' is the only Firebase skill     available to you, you must follow the reference for your agent environment     to set up the full suite of Firebase skills:     - **Gemini CLI**: Review
Medium risk

Basic operations trigger wildcard installation or global updating of an entire third-party Skill suite

Source references: 5
What we found

When this is the only Firebase Skill, the instructions require the full suite. Several guides use `--skill "*" --yes`, and refresh guidance can update all installed Skills with `--global --yes`. This expands the instructions the agent may follow later and can alter the user's agent-wide environment.

Why this matters

New or updated Skills can change how the agent handles future tasks, beyond the basic Firebase operations claimed here. Global installation affects other projects, while automatic confirmation and moving versions reduce the opportunity to review each addition.

The main instructions require setting up the full Firebase skill suite when this is the only skill. The Android Studio guide installs every skill with a wildcard and `--yes`, while the refresh guide offers a global, noninteractive update. This persistently changes the agent's instruction set beyond basic Firebase operations. Users can require per-skill approval, pin the source, keep installation project-local, and decline unrelated global updates.

SKILL.md:22In the instructionsOpen original file
     [references/local-env-setup.md](references/local-env-setup.md).   - **DO NOT SKIP** this step: if 'firebase-basics' is the only Firebase skill     available to you, you must follow the reference for your agent environment     to set up the full suite of Firebase skills:     - **Gemini CLI**: Review
Show 4 other places
references/setup/android_studio.md:8In the instructionsOpen original file
Gemini in Android Studio expects skills to be located at `~/.agents/skills`.To install all Firebase skills, run the following command in your terminal:```bashnpx -y skills add firebase/agent-skills --skill "*" --yes```Ensure that the skills are installed or linked to the `~/.agents/skills`directory.
references/refresh/other-agents.md:58In the instructionsOpen original file
1. **Update Existing Skills:** Update all currently installed skills to their   latest versions:   ```bash   # Update project-level skills   npx -y skills update --agent <AGENT_NAME> --yes   # Update global-level skills   npx -y skills update --agent <AGENT_NAME> --global --yes   ```
references/setup/other_agents.md:6In the instructionsOpen original file
## Recommended: Global SetupThe agent skills and MCP server should be installed globally for consistentaccess across projects.
SKILL.md:19In the instructionsOpen original file
   - Verify if the Firebase MCP server is installed using your existing tools.   - **CRITICAL**: Before configuring any extensions or agent environments     below, you MUST read     [references/local-env-setup.md](references/local-env-setup.md).   - **DO NOT SKIP** this step: if 'firebase-basics' is the only Firebase skill     available to you, you must follow the reference for your agent environment     to set up the full suite of Firebase skills:     - **Gemini CLI**: Review
Low risk

The install command does not pin a dependency version

Source references: 3
What we found

The installation command does not specify dependency versions. The same command may download different code later, so what you install can differ from what was checked.

Why this matters

A later install may download different code even though the command and this report have not changed.

The skill explicitly requires every Firebase CLI invocation, including a version check, to use `npx -y firebase-tools@latest`. `latest` changes over time and `-y` skips installation confirmation, so newly published package code may execute in the user's environment. The user can ask for a pinned, reviewed version or restrict npm network and command permissions.

When Genkit is used, the document tells the user to install skills from a repository through `npx skills add` without pinning a release or commit. The same command can later retrieve different content and add new instructions to the agent environment. The user can request a trusted pinned commit, inspect the files first, and limit installation to project scope.

SKILL.md:82In the instructionsOpen original file
1. **Use npx for CLI commands:** To ensure you always use the latest version of   the Firebase CLI, always prepend commands with `npx -y firebase-tools@latest`   instead of just `firebase`. For example, use   `npx -y firebase-tools@latest --version`. NEVER suggest the naked `firebase`   command as an alternative.1. **Prioritize official knowledge:** For any Firebase-related knowledge,
Show 2 other places
SKILL.md:147In the instructionsOpen original file
  ```bash  npx skills add genkit-ai/skills  ```
SKILL.md:142In the instructionsOpen original file
- **Login Issues:** If the browser fails to open during the login step, use  `npx -y firebase-tools@latest login --no-localhost` instead.- **Genkit:** If using Genkit, install the skills:    ```bash  npx skills add genkit-ai/skills  ```
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.Risks found: 1
Medium risk

The Skill claims basic-only scope but directs agents toward explicitly excluded Firebase services

Source references: 5
What we found

The main description excludes Hosting, Firestore, and Auth, yet its referenced initialization flow selects Firestore, Functions, and Hosting, while the Web guide initializes Auth and reads Firestore. An agent may treat those references as implementation instructions for the current Skill.

Why this matters

During a request limited to login, project switching, or configuration download, the agent could expand the task by creating configuration files, installing SDKs, or beginning cloud-service configuration or access. This changes the codebase and may affect remote projects, future charges, or data access.

There is a clear scope conflict. The description excludes Hosting, Firestore, and Auth, but the main file points to a service-initialization guide that actively offers Firestore, Functions, and Hosting. Its linked web guide also initializes Auth and reads Firestore. Following these references could change code, dependencies, or cloud configuration beyond a basic setup request. Users can approve only explicitly listed basic commands and prohibit service initialization.

SKILL.md:4In the instructionsOpen original file
description: >-  Provides foundational Firebase CLI setup, CLI installation, version checks (`firebase-tools@latest --version`), CLI login (including --no-localhost), project creation, project selection (`firebase use`), and app config file downloads (`google-services.json`, `GoogleService-Info.plist`). Use ONLY for CLI login, project creation/switching, or downloading app config files. Don't use for Firebase Hosting deploy, Firestore, Auth, App Hosting, Data Connect, Crashlytics, or Remote Config.metadata:
Show 4 other places
SKILL.md:127In the instructionsOpen original file
# References- **Initialize Firebase:** See  [references/firebase-service-init.md](references/firebase-service-init.md)  when you need to initialize new Firebase services using the CLI.- **Exploring Commands:** See  [references/firebase-cli-guide.md](references/firebase-cli-guide.md) to  discover and understand CLI functionality.- **SDK Setup:** For detailed guides on adding Firebase to your app:  - **Web**: See [references/web_setup.md](references/web_setup.md)  - **Android**: See [references/android_setup.md](references/android_setup.md)  - **iOS**: See [references/ios_setup.md](references/ios_setup.md)
references/firebase-service-init.md:10In the instructionsOpen original file
1. **Initialize Services:** Run the initialization command:   ```bash   npx -y firebase-tools@latest init   ```The CLI will guide you through:- Selecting features (Firestore, Functions, Hosting, etc.).- Associating with an existing project or creating a new one.- Configuring files (e.g. `firebase.json`, `.firebaserc`).
references/web_setup.md:63In the instructionsOpen original file
Import specific services as needed (Modular API):```javascriptimport { getFirestore, collection, getDocs } from "firebase/firestore";import { app } from "./firebase"; // Import the initialized appconst db = getFirestore(app);async function getUsers() {  const querySnapshot = await getDocs(collection(db, "users"));  querySnapshot.forEach((doc) => {    console.log(`${doc.id} => ${doc.data()}`);  });}
SKILL.md:2In the instructionsOpen original file
---name: firebase-basicsdescription: >-  Provides foundational Firebase CLI setup, CLI installation, version checks (`firebase-tools@latest --version`), CLI login (including --no-localhost), project creation, project selection (`firebase use`), and app config file downloads (`google-services.json`, `GoogleService-Info.plist`). Use ONLY for CLI login, project creation/switching, or downloading app config files. Don't use for Firebase Hosting deploy, Firestore, Auth, App Hosting, Data Connect, Crashlytics, or Remote Config.metadata:
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

3 instruction sections

The Skill claims a narrow scope: Firebase CLI login, project creation/switching, and app-config downloads, explicitly excluding deployment, Firestore, Auth, and other services.

View source
SKILL.md:4In the instructionsOpen original file
description: >-  Provides foundational Firebase CLI setup, CLI installation, version checks (`firebase-tools@latest --version`), CLI login (including --no-localhost), project creation, project selection (`firebase use`), and app config file downloads (`google-services.json`, `GoogleService-Info.plist`). Use ONLY for CLI login, project creation/switching, or downloading app config files. Don't use for Firebase Hosting deploy, Firestore, Auth, App Hosting, Data Connect, Crashlytics, or Remote Config.metadata:

Before selecting or creating a Firebase project, the main instructions require pausing for the user's choice; an already-active project must also be confirmed.

View source
SKILL.md:51In the instructionsOpen original file
   > [!IMPORTANT] **For Agents:** Before proceeding with project configuration,   > you MUST pause and ask the developer if they prefer to:   >   > 1. **Provide an existing Firebase Project ID**, or   > 1. **Create a new Firebase project**.
SKILL.md:59In the instructionsOpen original file
     1. Check the current project by running `npx -y firebase-tools@latest use`.     1. If the command outputs `Active Project: <project-id>`, confirm with the        user if this is the intended project.     1. If not, or if no project is active, set the project provided by the

The Skill requires Firebase authentication and retrieves Android/iOS app configuration through the CLI for saving into the project.

View source
SKILL.md:40In the instructionsOpen original file
1. **Authentication:** Ensure you are logged in to Firebase so that commands   have the correct permissions. Run `npx -y firebase-tools@latest login`. For   environments without a browser (e.g., remote shells), use   `npx -y firebase-tools@latest login --no-localhost`.   - The command should output the current user.   - If you are not logged in, follow the interactive instructions from this     command to authenticate.
SKILL.md:115In the instructionsOpen original file
     [references/refresh/other-agents.md](references/refresh/other-agents.md)1. **Automate Config File Retrieval:** When setting up iOS or Android apps, do   NOT direct users to the Firebase Console to download `google-services.json`   or `GoogleService-Info.plist`. Instead, use the Firebase CLI to fetch the   config programmatically:   - For Android:     `npx -y firebase-tools@latest apps:sdkconfig ANDROID <APP_ID> --project <PROJECT_ID>`   - For iOS:     `npx -y firebase-tools@latest apps:sdkconfig IOS <APP_ID> --project <PROJECT_ID>`     Save the output to the appropriate location (e.g.,     `app/google-services.json` for Android, or a path to be linked by     `xcode-project-setup` for iOS).

The main workflow treats installation of the full Firebase Skill suite and MCP server as a prerequisite rather than limiting setup to the claimed basic functions.

View source
SKILL.md:18In the instructionsOpen original file
     is installed.   - Verify if the Firebase MCP server is installed using your existing tools.   - **CRITICAL**: Before configuring any extensions or agent environments     below, you MUST read     [references/local-env-setup.md](references/local-env-setup.md).   - **DO NOT SKIP** this step: if 'firebase-basics' is the only Firebase skill     available to you, you must follow the reference for your agent environment     to set up the full suite of Firebase skills:     - **Gemini CLI**: Review
references/local-env-setup.md:71In the instructionsOpen original file
## 4. Install Agent Skills and MCP ServerTo fully manage Firebase, the agent needs specific skills and the Firebase MCPserver installed. Refer to the main `SKILL.md` for direct links to theinstallation instructions specific to your agent environment.______________________________________________________________________**CRITICAL AGENT RULE:** Do NOT proceed with any other Firebase tasks untilEVERY step above has been successfully verified and completed.
Start here · InstructionsSKILL.md
firebase-basics
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.

File reference map

References: 18
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records20 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • references/android_setup.mdFull text included
  • references/firebase-cli-guide.mdFull text included
  • references/firebase-service-init.mdFull text included
  • references/ios_setup.mdFull text included
  • references/local-env-setup.mdFull text included
  • references/refresh/android_studio.mdFull text included
  • references/refresh/antigravity.mdFull text included
  • references/refresh/claude.mdFull text included
  • references/refresh/gemini-cli.mdFull text included
  • references/refresh/other-agents.mdFull text included
  • references/setup/android_studio.mdFull text included
  • references/setup/antigravity.mdFull text included
  • references/setup/claude_code.mdFull text included
  • references/setup/cursor.mdFull text included
  • references/setup/gemini_cli.mdFull text included
  • references/setup/github_copilot.mdFull text included
  • references/setup/other_agents.mdFull text included
  • references/web_setup.mdFull text included
  • references/flutter_setup.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • references/android_setup.mdSupporting file
  • references/firebase-cli-guide.mdSupporting file
  • references/firebase-service-init.mdSupporting file
  • references/flutter_setup.mdSupporting file
  • references/ios_setup.mdSupporting file
  • references/local-env-setup.mdSupporting file
  • references/refresh/android_studio.mdSupporting file
  • references/refresh/antigravity.mdSupporting file
  • references/refresh/claude.mdSupporting file
  • references/refresh/gemini-cli.mdSupporting file
  • references/refresh/other-agents.mdSupporting file
  • references/setup/android_studio.mdSupporting file
  • references/setup/antigravity.mdSupporting file
  • references/setup/claude_code.mdSupporting file
  • references/setup/cursor.mdSupporting file
  • references/setup/gemini_cli.mdSupporting file
  • references/setup/github_copilot.mdSupporting file
  • references/setup/other_agents.mdSupporting file
  • references/web_setup.mdSupporting file

Operations mentioned in code and instructions

Install extra software packages
SKILL.md:16In the instructionsOpen original file
   - Run `npx -y firebase-tools@latest --version` to check if the Firebase CLI     is installed.
SKILL.md:41In the instructionsOpen original file
1. **Authentication:** Ensure you are logged in to Firebase so that commands   have the correct permissions. Run `npx -y firebase-tools@latest login`. For   environments without a browser (e.g., remote shells), use
SKILL.md:43In the instructionsOpen original file
   environments without a browser (e.g., remote shells), use   `npx -y firebase-tools@latest login --no-localhost`.
Run commands
SKILL.md:65In the instructionsOpen original file
                ```bash        npx -y firebase-tools@latest use <PROJECT_ID>
SKILL.md:71In the instructionsOpen original file
     ```bash     npx -y firebase-tools@latest projects:create <project-id> --display-name "<display-name>"
SKILL.md:146In the instructionsOpen original file
    ```bash  npx skills add genkit-ai/skills
Connect to websites
references/flutter_setup.md:15In the instructionsOpen original file
   1. **Download SDK**: Fetch the latest stable SDK from the      [Flutter Archive](https://docs.flutter.dev/install/archive?tab=macos).   1. **Extract**: Unzip the SDK to a permanent directory (e.g.,
references/ios_setup.md:61In the instructionsOpen original file
> Firebase iOS SDK at> [https://github.com/firebase/firebase-ios-sdk/releases](https://github.com/firebase/firebase-ios-sdk/releases)> and use that version when adding the SPM dependency.
references/local-env-setup.md:20In the instructionsOpen original file
  1. Guide the user to the     [official nvm repository](https://github.com/nvm-sh/nvm#installing-and-updating).  1. Request the user to manually install `nvm` and reply when finished. **Stop
Read keys or account settings
references/web_setup.md:45In the instructionsOpen original file
const firebaseConfig = {  apiKey: "API_KEY",  authDomain: "PROJECT_ID.firebaseapp.com",
Lines read
1,372
File checksum (to compare versions)
edbe6d0cf356ef129f7d5b45a8dc199f9e4b07386c6af9ce0b1371a77a2e3a50